【问题标题】:Scripting: reading file from remote machine and store in dir variable脚本:从远程机器读取文件并存储在 dir 变量中
【发布时间】:2018-05-22 20:14:10
【问题描述】:

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

【问题讨论】:

    标签: linux bash ssh scripting remote-access


    【解决方案1】:

    通过ssh执行远程命令如下(例如猫/etc/hosts并将其存储在本地变量中):

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2015-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-05
        相关资源
        最近更新 更多