以下は、リモートサーバー上のファイル数を数えるスクリプトです。しかし、うまくいきません。
#!/usr/bin/expect
spawn ssh [email protected]
expect "123"
send "123"
interact
destPath='/archive/Input/ERICIN/AIR/EMG'
dayStamp=`(date --date='1 day ago' '+%Y%m%d')`
if [ -d $destPath ]
then
cd $destPath
`cat 'emg_audit_1_'$dayStamp.csv|grep 'ACTPSO_NE_'$dayStamp|wc -l > /home/stsuser/eastregioncount/NEremote$dayStamp.txt`
else
echo "ERROR: Path $destPath Does not Exists."
fi
答え1
これを機能させるには、2つの主な変更をお勧めします。
- 公開/秘密鍵ペアの使用
- コマンドラインからSSHにコマンドを送信する
ssh-keygen
を使用して新しい秘密鍵と公開鍵のペアを作成し、生成されたssh-copy-id
公開鍵をを使用して新しいアカウントにインストールできます172.0.0.2
。expect "123"
その後、そのシーケンスを再実行する必要はありません。
これにより、ssh
コマンドラインからコマンドをより簡単に呼び出すことができます(両方のシステムのタイムゾーンが同じであると仮定)。
destPath='/archive/Input/ERICIN/AIR/EMG'
dayStamp=`(date --date='1 day ago' '+%Y%m%d')`
ssh [email protected] "cd $destPath; cat 'emg_audit_1_'$dayStamp.csv| grep 'ACTPSO_NE_'$dayStamp| wc -l > /home/stsuser/eastregioncount/NEremote$dayStamp.txt"
if [ $? -ne 0 ]
then
echo "ERROR"
fi
cdコマンドはすでに$ destPathが存在しないことを知らせているので、直接エコーする必要はありません。ただしecho "Error"
、必要に応じて終了コードをテストし、より意味のある操作を実行できます。