脚本:从远程机器读取文件并存储在dir变量中

时间:2015-06-23 08:46:56

标签: linux bash ssh scripting remote-access

我有两台机器..我从远程机器运行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变量中的文件行并使用它我的脚本

2 个答案:

答案 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""