while read line 代码中调用ssh文件重定向的问题分析
.
在使用ssh执行远程命令时,我们经常会遇到一些问题。例如,当我们想要将远程命令的输出重定向到本地文件时,就会遇到一些麻烦。
首先,我们来看一下代码:
#!/bin/bash
while read line
do
ssh root@$line "uptime" > /tmp/$line.txt
done < /tmp/iplist.txt
代码的作用是:通过ssh执行远程命令“uptime”,并将输出重定向到本地文件/tmp/$line.txt中。
然而,当我们运行这段代码时,发现/tmp目录下并没有生成任何文件。
那么,为什么代码执行不正常呢?
原因是,在执行ssh命令时,我们需要指定一个参数:-t。
这个参数的作用是:强制将远程命令的输出重定向到本地文件。
改写后的代码如下:
#!/bin/bash
while read line
do
ssh -t root@$line "uptime" > /tmp/$line.txt
done < /tmp/iplist.txt
运行这段代码后,就可以在/tmp目录下生成相应的文件了。
相关文章