我正在创建一个简单的脚本,该脚本可以远程登录来自多个源的多个目标IP和端口。我有4个文件-一个具有目标IP,第二个具有端口,第三个具有源IP列表,最后一个是将每个目标远程登录的脚本。来自多个来源的IP和端口。所以我有这些文件:
dest_ips.txt,
ports.txt,
source_ips.txt,
port_test.sh
我正在尝试这样的事情:
for s in `cat source_ips.txt`
do
ssh $s <port_test.sh`
如何将前两个文件(dest_ips.txt,ports.txt)输入此脚本?
答案 0 :(得分:0)
首先,为什么将服务器和端口分成单独的文件?
除此之外,请勿使用您列出的结构:
for s in `cat source_ips.txt`
相反,使用类似
while read s
do # . . .
done < source_ips.txt
有很多需要改进的地方,但让我们暂时保持简单。有关更多信息,请参见BashFAQ 001
我假设ssh
正在读取的脚本将使用其他文件。
要回答您提出的问题,如何将它们作为参数传递?
while read s
do scp dest_ips.txt ports.txt port_test.sh "$s:/tmp/"
ssh "$s" "cd /tmp && . port_test.sh dest_ips.txt ports.txt" <&-
done < source_ips.txt