約1000台のネットワークデバイスでコマンドを実行し、出力をファイルに保存する必要があります。ファイルには、SSHを使用して接続する必要があるすべてのネットワークデバイス名がリストされています。たとえば、コマンドを実行して出力をshow interface description
ファイルに保存する必要があります。これらのデバイスは、すべてのデバイスで同じ共通ユーザー名とパスワードに設定されます。したがって、デフォルトでは、リストファイル内のすべてのデバイスでこれらのコマンドを実行するにはスクリプトが必要です。
ssh user@device1
password: passwordhere
user@device1> show interface description
user@device1> exit
次に、すべての出力をファイルに保存します。私はRed Hat Enterprise Serverを使用しています。
答え1
自動化する最も重要なのは、ssh
パスワードを入力することです。パスワードなしで設定ssh
またはインストールする2つの方法を試すことができますsshpass
。
パスワードを入力するために使用されます
sshpass
。お持ちの場合DAGリポジトリ設定が完了したら、yumを使用してインストールできます。yum install sshpass
そうでない場合でもできます。RPMを直接ダウンロードまたは、リポジトリーを追加したら、以下をインストールします。
rpmforge-release パッケージをダウンロードします。以下の2つのリンクのいずれかを選択し、ホスティングアーキテクチャに一致するリンクを選択してください。使用するものがわからない場合は、次のようにスキーマを確認できます。
uname -i
DAG用GPGキーのインストール
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
ダウンロードしたパッケージのインストール
rpm -i rpmforge-release-0.5.2-2.el6.rf.*.rpm
インストールする
sshpass
yum install sshpass
一度インストールすると、各行にデバイスの名前またはIPを含む
sshpass
ファイルが与えられたら、次のようにプロセスを自動化できます。ips.txt
while read ip; do echo -n "$ip: " >> local_file.log; sshpass -p 'your password' ssh user@$ip remote_command >> local_file.log done < ips.txt
ssh
または、各デバイスにパスワードを設定せずにインストールをスキップすることもできますsshpass
。パスワードなしで設定
ssh
ssh-keygen -t rsa while read ip; do ssh-copy-id -i ~/.ssh/id_rsa.pub user@$ip; done < ips.txt
あなたの仕事を実行
while read ip; do echo -n "$ip: " >> local_file.log; ssh user@$ip remote_command >>local_file.log done < ips.txt
答え2
数年前、私はリモート接続の自動化に関して同様の問題に直面しました。使った予想される非常に柔軟なツールですが、時々使用するのは少し面倒です。ユーザーがコマンドラインに入力して実行できるすべての操作を実行しますが、システムの可能なすべての反応はスクリプトで識別できる必要がありますexpect
(したがって、ツール名:驚きが好きではありません)。
しかし、これはあなたの問題に大きなハンマーになる可能性があり、@erdonが提案した解決策はより軽く、より適切である可能性があります。
答え3
これにはPythonとParamikoスクリプトを使用できます。接続して申し訳ありませんが、ここにスクリプトを投稿しました。」http://certifiedgeek.weebly.com/blog/network-scripting-via-ssh-with-python-and-paramiko「スクリプトがある場所」https://github.com/cwgueco/netscript」
"netscript.py"スクリプトには次のオプションがあります。
netscript.py -t <target> -u <username> -p <password> -i <command_file> -v
- the target is the IP address/hostname
- username/password should have allowed privilege to run commands
- command_file is a text file where the commands are listed
- v for verbose wherein you can pipe this to a file
各デバイスに接続して同じコマンドセットを実行し、各出力をファイルにパイプするときにこのPythonスクリプトを繰り返すスクリプトを作成するだけです。