while read line 代码中调用ssh文件重定向的问题分析

2023-04-09 20:59:00 代码 调用 重定向

.

在使用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目录下生成相应的文件了。

相关文章