首先,我在编写脚本方面非常弱,所以请仅使用此算法来解释我的问题:
阶段1:从Server-1获取所有信息,并将其保存在文本文件中 阶段2:将文本文件复制到Server-2并重新运行脚本以创建Server-1中存在的类似信息
阶段1:
file1.txt:
row1
ROW2
row3
ROW4
如果我在file1.txt的row1上运行command1,它会给我一个输出如下:
./command1 row1 > output
猫输出
冬天:1456年 夏天:5467 春天:2314秋季:3443
同样,具有command1的所有其他行将具有4个具有不同赛季代码的其他输出。 4个输出用于简单。我所处理的那个 - 在每个命令输出中有大约40个输出。
现在我需要知道如何将这16个输出放在output.txt中,以便我可以在另一个服务器中重新创建相同的信息?
-
在@mofoe的回复后更新:
嘿,首先谢谢你。我认为这是朝着正确的方向发展的。 所以我认为这让我直到最后一步的输出,以便在将这些数据输回到另一台服务器时非常有用。考虑这个带有静态输出的ping命令,并忽略任何动态或更改值,想一想,它的一些命令输出将用于输入位于其他位置的另一个服务器。由于将运行许多不同的命令以进入系统,因此不能仅通过粘贴整个文本文件或整行来完成。只有一部分是重要的,也是必需的。再一次,我真的很感激甚至回答一个蹩脚的问题。谢谢。
所以这就是我们现在所处的位置。我使用Ping命令向你解释情况,它实际上与ping没有任何关系。将其视为标准和静态输出形式的其他命令。
[root@host-11 test]# cat file1.txt
#only 2 hosts are typed in here, originally there are 500+
host-11
host-12
[root@host-11 test]# cat script
#!/bin/sh
while read line; do
/bin/ping -c 4 $line >> output.txt
done < file1.txt
[root@host-11 test]# cat output.txt
PING host-11 (x.x.x.x) 56(84) bytes of data.
64 bytes from host-11 (x.x.x.x): icmp_seq=1 ttl=64 time=0.023 ms
64 bytes from host-11 (x.x.x.x): icmp_seq=2 ttl=64 time=0.036 ms
64 bytes from host-11 (x.x.x.x): icmp_seq=3 ttl=64 time=0.038 ms
64 bytes from host-11 (x.x.x.x): icmp_seq=4 ttl=64 time=0.034 ms
--- host-11 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.023/0.032/0.038/0.009 ms
PING host-12 (y.y.y.y) 56(84) bytes of data.
64 bytes from host-12 (y.y.y.y): icmp_seq=1 ttl=64 time=0.228 ms
64 bytes from host-12 (y.y.y.y): icmp_seq=2 ttl=64 time=0.267 ms
64 bytes from host-12 (y.y.y.y): icmp_seq=3 ttl=64 time=0.264 ms
64 bytes from host-12 (y.y.y.y): icmp_seq=4 ttl=64 time=0.246 ms
--- host-12 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.228/0.251/0.267/0.019 ms
所以现在,我需要有组织的文本文件,如下所示:
cat output.txt
host-name IP icmp_seq1 icmp_seq2 rtt
host-11: (x.x.x.x) time=0.023 time=0.036 0.023/0.032/0.038/0.009
host-12: (y.y.y.y) time=0.228 time=0.267 0.228/0.251/0.267/0.019
** all other hosts that might have been included in the file1.txt
所以一旦我有这个,我将不得不运行4个不同的命令在另一个服务器中输入它。我希望现在更有意义吗?
答案 0 :(得分:0)
尝试以下方法:
#!/bin/sh
while read line; do
./command1 $line >> output.txt
done < file1.txt
此脚本遍历file1.txt
中的每一行,与该行一起运行./command1
并将输出附加到output.txt