複数のネットワークデバイスに自動的に接続し、コマンドを実行し、出力をファイルに保存する方法は?

複数のネットワークデバイスに自動的に接続し、コマンドを実行し、出力をファイルに保存する方法は?

約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を直接ダウンロードまたは、リポジトリーを追加したら、以下をインストールします。

    1. rpmforge-release パッケージをダウンロードします。以下の2つのリンクのいずれかを選択し、ホスティングアーキテクチャに一致するリンクを選択してください。使用するものがわからない場合は、次のようにスキーマを確認できます。uname -i

    2. DAG用GPGキーのインストール

      rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
      
    3. ダウンロードしたパッケージのインストール

      rpm -i rpmforge-release-0.5.2-2.el6.rf.*.rpm
      
    4. インストールする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

    1. パスワードなしで設定ssh

      ssh-keygen -t rsa
      while read ip; do 
        ssh-copy-id -i ~/.ssh/id_rsa.pub user@$ip; 
      done < ips.txt
      
    2. あなたの仕事を実行

      while read ip; do 
        echo -n "$ip: " >> local_file.log;
        ssh user@$ip remote_command >>local_file.log
      done < ips.txt
      

おすすめ記事