无法在shell脚本中使用ssh

时间:2014-08-19 09:32:22

标签: shell unix ssh

我有这个shell脚本ssh到其他服务器,找到几个特定文件(.seq文件早于50 mnts)并将其名称写入另一个文件。

#! /usr/bin/bash

while read line
do
#echo $line
if [[ $line =~ ^#  ]];
then
#echo $line;
continue;

else
serverIP=`echo $line|cut -d',' -f1`
userID=`echo $line|cut -d',' -f2`
fi
done < sftp.conf

sshpass -p red32hat ssh $userID@$serverIP
cd ./perl
for files in `find -name "*.seq" -mmin +50`
do
#sshpass -p red32hat scp *.seq root@rinacac-test:/root/perl
echo $files>>abcde.txt
done
exit;
#EOF

现在的问题是,当我运行它时..既没有写入abcde.txt文件也没有从远程服务器退出。当我手动执行退出命令时...它存在说“perl no such file or directory”...而我的主目录中有perl子目录.. 另一件事是当我在第二台服务器上运行脚本的for循环部分时(通过直接登录)它工作正常并写入abcde.txt filr ...请帮助......

1 个答案:

答案 0 :(得分:0)

ssh接受标准输入或最后一个参数的命令。因此,您可以这样做(非常动态但很难让expansions正确):

ssh user@host <<EOF
some
custom
commands
EOF

或者这个(动态性较差,但可以采用简单的参数而不转义):

scp my_script.sh user@host:
ssh user@host './my_script.sh'