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

Scripting: reading file from remote machine and store in dir variable

我有两台机器.. Im 运行 a 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*  

任何人都可以帮助我,以便我可以远程 cat dir 变量中的文件行并在我的脚本中使用它

通过 ssh 执行远程命令如下(示例 cats /etc/hosts 并将其存储在局部变量中):

result=`ssh $UNAME@${!IP_Addr} "cat /etc/hosts"`

这将回答标题中所述的问题。对于 for 循环应用程序,您要么必须将整个命令写在一行中,要么将 multi-line 字符串作为 ssh 参数发送。当然,您会多次执行某项操作,从而导致多个输出。然后,此输出将存储在单个变量中。为了稍后将其拆分并将其分配给不同的循环值,请向输出添加一个 "separator string",稍后您可以使用它来拆分字符串。

以下命令会将远程文件输出存储在本地服务器变量 (dir) 中:

ssh -t user@servername "dir=$(cat /path/to/files ); echo "$out""