我有两台机器..我从远程机器运行bash shell,我在机器上运行ssh(已经共享的ssh密钥),然后尝试从文件中读取。 但是,当我执行ssh时它进入提示..等待一些命令,然后执行脚本的下一行。
Proc_m1_s1$ cat CleanCounters.txt
/root/karan/Logs/Counters/
/root/karan/Logs/Signalling/
脚本
while [ $i -le 12 ]
do
IP_Addr="IP$i"
ssh $UNAME@${!IP_Addr}
for dir in $(cat /root/karan/bin/CleanCounters.txt); do
find $dir -name "A*" -type f -mtime +60 |xargs rm -f
done
i=$(( i+1 ))
done
我按以下方式得到结果......
[csbackup@muarchive BackupFolderNames]$ /home/csbackup/BackupFolderNames/CleanLogs_MUTUNDWE.sh
Last login: Tue Jun 23 11:13:14 2015 from o2net2
Proc_m1_s1$
Proc_m1_s1$ exit
logout
Connection to 10.0.0.1 closed.
cat: /root/karan/bin/CleanCounters.txt: No such file or directory*
任何人都可以帮助我,以便我可以远程捕获dir变量中的文件行并使用它我的脚本
答案 0 :(得分:1)
通过ssh
执行远程命令,如下所示(示例cats /etc/hosts
并将其存储在本地变量中):
result=`ssh $UNAME@${!IP_Addr} "cat /etc/hosts"`
这将回答标题中所述的问题。对于for
循环应用程序,您可能必须在一行中编写整个命令,或者将多行字符串作为ssh
参数发送。当然,你多次做事,导致多个输出。然后将该输出存储在单个变量中。为了稍后拆分并将其分配给不同的循环值,添加一个"分隔符字符串"输出,然后您可以使用它来分割字符串。
答案 1 :(得分:-1)
下面的命令将远程文件输出存储在本地服务器变量(dir)中:
ssh -t user@servername "dir=\$(cat /path/to/files ); echo "$out""