使用 ssh 和 Expect 脚本对远程服务器上的文件进行计数

使用 ssh 和 Expect 脚本对远程服务器上的文件进行计数

下面是我的脚本,用于对远程服务器中存在的文件进行计数。但它不起作用。

#!/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

为了让它发挥作用,我建议进行两项重大改变:

  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"如果有必要,您可以测试退出代码并执行一些更有意义的操作(比)。

相关内容