下面是我的脚本,用于对远程服务器中存在的文件进行计数。但它不起作用。
#!/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
为了让它发挥作用,我建议进行两项重大改变:
- 使用公钥/私钥对
- 在命令行上发送命令到 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"
如果有必要,您可以测试退出代码并执行一些更有意义的操作(比)。