サーバーリストからpingコマンドを実行し、ファイルに出力

サーバーリストからpingコマンドを実行し、ファイルに出力

servers.txtサーバーのリストを含むファイルが別のサーバーにあります。

server1.mydomain.com
server2.mydomain.com
server3.mydomain.com

まず、このtxtファイルをダウンロードしてそのサーバーにpingを実行してから、ping結果をファイルに出力したいと思います。 x秒ごとに無限ループでこれを行いたいです。

私はVPSログインを持っており、これまでVPSに接続するために呼び出されたプログラムを使用して見つけましたputty.exe

この問題にどのように対処する必要がありますか?スクリプトを作成し、サーバーをx秒ごとに実行するように設定するか、whileループを使用する必要があると思います。

ベストアンサー1

さて、今あなたの質問を理解したと思います。

ホスト1で

host1インストールするホストを介してすでに接続されているか(パッケージマネージャでそのホストが必要です)とします。初心者には少し簡単なのでおすすめです。sshputtyscreentmuxscreen

また、ログインが必要なので、host2パスワードなしでログインできるアカウントをhost1設定する必要があります。ssh keyこれを行うには、以下を実行する必要があります。

ssh-keygen -f ~/.ssh/host1tohost2

パスワードの入力を求められます。スクリプトの実行を自動化するには(パスワードを手動で入力する必要なしに)、空のパスワードに設定する必要があります。 Host1が安全であることを確認してください!このキーのおかげで、コントロールを持っている人は誰でもhost1コントロールを得ることができますhost2(ユーザー権限が許可する範囲内で)。

このコマンドは次のファイルを生成します。

~/.ssh/host1tohost2
~/.ssh/host1tohost2.pub

~/.ssh/host1tohost2.pub次の場所にコピーする必要がありますhost2

scp ~/.ssh/host1tohost2.pub me@host2:~

ホスト2で

Host2で作成し~/.sshてそこに移動したら、そのディレクトリに次のファイルを作成しますhost1tohost2.pubauthorized_keys

mkdir -f ~/.ssh
mv ~/host1tohost2.pub ~/.ssh
cd ~/.ssh
cat host1tohost2.pub >> authorized_keys

これにより、対話型パスワードプロンプトなしでhost1ログインできます。host2

次に、

ファイルservers.txtがにあるとしましょう。この仮定はスクリプトで使用するので必要です。/home/me/myservers/servers.txthost2pathhost1

ホスト1に戻る

必要な無限ループスクリプトは次のとおりです。

#!/bin/sh

X_SECONDS=6
LOGFILE=~/mypings.log

while ((1)); do
    # >$LOGFILE  # clear log file (see comments)
    ssh -i ~/.ssh/host1tohost2 me@host2 'cat /home/me/myservers/servers.txt' |
    while read x; do
        echo "ping to $x"
        ping -c1 $x >> $LOGFILE
    done
    sleep $X_SECONDS
done

スクリプトがというファイルに保存されているとしますpingservers.sh。ただし、一度閉じると停止するため、まだ実行しないでくださいputty。さて、screen現場に行きましょう(設置しましたね?)。ランニング:

screen

明らかに何も変わらなかった。これでin経由でアクセスした環境にありshell、その後そのシェルで閉じるとシェルは一度も閉じません。 (実際にOSだけを終了すると問題が解決し、どうせシェルも閉じないようになりますが、教育的な理由で適切に行ってください)。分離する前に、以下を実行する必要があります。socket/var/rundetachputtyputtydetach

./pingservers.sh

永久に実行され、echoログファイルへの書き込み中に複数のメッセージを保持します。

取り外すには、screenキーを入力する必要がありますCtrl+A D(をCtrl押してからA離してCtrlを押しますD)。もう一度shellログインしたので、閉じてコーヒーを飲むputtyことができます。putty

再度ログインすると、host1ファイルは~/mypings.logより多くのpingで更新されます(screen再実行する必要はありません)。リアルタイムで更新されたファイルを確認するには、次のものを使用できます。

tail -f ~/mypings.log

これArch Linux Wikiには、ssh-keygenとSSHキーに関するより有用な情報があります。、同じGNU画面。どちらの記事も両方のプログラムの優れた情報源です。

おすすめ記事