আমি কীভাবে ssh এর মাধ্যমে সার্ভারে লগ ইন করতে পারি তা যাচাই করব?


13

আমার সার্ভারগুলির একটি তালিকা রয়েছে:

cat list.txt
10.10.10.10 servera
10.11.10.10 serverb

আমি কীভাবে চেক করতে পারি যে আমি তাদের সাথে এসএসএসের মাধ্যমে লগ ইন করতে পারি বা না? আমি বলতে চাইছি ডিফল্টরূপে আমার ssh কী লেখকের মাধ্যমে লগ ইন করতে সক্ষম হওয়া উচিত .. সুতরাং সংক্ষেপে আমার এমন একটি সমাধান দরকার যা তালিকার লাইনগুলি (সার্ভারগুলি) সাজায় t txt এর মতো:

  • সার্ভারগুলি যা আমি ssh কী এর মাধ্যমে লগ ইন করতে পারি
  • সার্ভারগুলি যা পাসওয়ার্ডের জন্য অনুরোধ করে (অবশ্যই পাসওয়ার্ডটি অজানা ..)
  • অ্যাক্সেসযোগ্য সার্ভারগুলি


pingসত্যিই ভাল সূচক নয়। অনেকগুলি সেটআপ রয়েছে যা sshসংযোগের অনুমতি দেয় তবে পিংসের জবাব দেয় না।
মাদুর

উত্তর:


25

BatchModeবিকল্পের সংমিশ্রণ এবং আউটপুট "পার্সিং" করে আপনি এটি করতে পারেন । ( sshযে কোনও কারণে সংযোগ করতে ব্যর্থ হলে সর্বদা 255 ফেরত দেয়, তাই আপনি ব্যর্থতার ধরণের মধ্যে পার্থক্য করতে রিটার্ন কোডটি ব্যবহার করতে পারবেন না))

সঙ্গে BatchModeউপর, কোনো পাসওয়ার্ড প্রম্পট বা অন্যান্য মিথষ্ক্রিয়া চেষ্টা করেছেন, তাই একটি কানেক্ট যে প্রয়োজন একটি পাসওয়ার্ড ব্যর্থ হবে হয়। (আমি ConnectTimeoutএটিতে সেখানে রেখেছি যা আপনার প্রয়োজন অনুসারে সামঞ্জস্য করা উচিত And এবং সত্যই খারাপ ফাইলের নাম বেছে নিয়েছে))

#! /bin/bash

rm good no_auth other
while read ip host ; do
    status=$(ssh -o BatchMode=yes -o ConnectTimeout=5 $ip echo ok 2>&1)
    case $status in
        ok) echo $ip $host >> good ;;
        *"Permission denied"*) echo $ip $host $status >> no_auth ;;
        *) echo $ip $host $status >> other ;;
    esac
done < list.txt

আপনার আরও বিশদ শ্রেণিবিন্যাসের প্রয়োজন হলে আপনি অন্যান্য ধরণের ত্রুটি সনাক্ত করতে পারেন (যেমন সার্ভার পাবলিক কী অনুপস্থিত)। আপনার যদি উপযুক্ত লাগে তবে একক, বাছাই করা ফাইল, কেবলমাত্র catবিভিন্ন আউটপুট ফাইলের ফলাফল প্রয়োজন need


1

এসএসএসের মাধ্যমে একাধিক হোস্টে চলমান কমান্ডগুলি স্বয়ংক্রিয় করতে বিভিন্ন সরঞ্জাম দেখুন। উদাহরণস্বরূপ, মুশির সাথে :

mussh -H hosts.txt -o ConnectTimeout=5 -P -d -c 'echo `hostname` is alive'

প্রয়োজন অনুযায়ী আউটপুট ম্যাসেজ করুন।

পার্শ্ব নোট: আপনি কেন আইপি ঠিকানাগুলি সংরক্ষণ করছেন list.txt? সার্ভারের নামগুলি যথেষ্ট। আপনি যে নামগুলি ব্যবহার করতে চান তা যদি ডিএনএসের নাম না হয় তবে এর Hostমধ্যে নির্দেশিকা ব্যবহার করুন ~/.ssh/config


0
servers that I can log in via ssh key
servers that prompts for password (of course password is unknown..)

প্রত্যাশা আপনার ইন্টারেক্টিভ কমান্ডগুলিতে ইনপুট সরবরাহ করবে। -V পতাকা সহ ssh ক্লায়েন্ট আপনাকে জানাতে হবে যে সার্ভার কী প্রমাণীকরণের পদ্ধতি গ্রহণ করে। যদি আপনি ইন্টারেক্টিভ প্রম্পটে যান, এটি ছেড়ে দিন। আপনি যা চান তা করুন, আপনার যা দরকার তা আছে।

servers that are unreachable

একই, তাদের সমস্তকে শাসন করার জন্য একটি আদেশ এবং অন্ধকারে, তাদের আবদ্ধ করুন ... হুম।


0

মাশেশ কমান্ডটি কেবল ত্রুটিগুলি আউটপুট দেবে যাতে আপনি এটি ডিবাগ ছাড়াই চালাতে পারেন।

$ cat list.txt
10.1.2.93       trustme
10.1.2.92       wobudong
10.41.41.41     failhost

$ awk '{print $2}' list.txt | mussh -H - -t 10 -m -c hostname
trustme: trustme
failhost: ssh: Could not resolve hostname failhost: Name or service not known
wobudong: ssh: connect to host wobudong port 22: Connection timed out
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.