首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash \ Txt文件> tmp>进程tmp>输出

Bash \ Txt文件> tmp>进程tmp>输出
EN

Unix & Linux用户
提问于 2019-06-07 15:48:38
回答 1查看 287关注 0票数 1

最近,我们让跳跃式主机与我们所有的设备进行交互。它是红色的,有6.x,我们没有根访问权限。我们可以脚本上的Autoexpect和bash只-没有可能的模块。

资料来源:我有5000台设备(每行1台,每个位置都有3个参数-- HostName IP --它们是分开的)。

任务:搜索每个位置的所有设备(假设out 5000,40为一个位置),将输出重定向到临时文件(没有输出,回显关闭),并为临时目录中的每个设备运行一个命令。输出应该用于HostName ARGV2而不是IP。

假设在tmp中ping每个设备并返回每个主机的成功,或者登录到每个设备,运行命令,输出主机的结果,然后移动到tmp文件中的下一个设备。

输入文件结构示例:

代码语言:javascript
复制
AA Torp1 1.1.1.1 
AA Torp2 2.2.2.2
BB Torp97 9.9.9.9

假设你想要平每个设备从本地AA。如何将cat hosts.txt | grep AA脚本编写为tmp,然后再ping每个IP,例如1.1.1.12.2.2.2,输出如下:

Torp1确定如果ping成功Torp2 NOK如果ping不确定

这是....or对基于位置、ssh、运行命令打印输出、然后删除tmp文件的每个IP的基本示例。

EN

回答 1

Unix & Linux用户

发布于 2019-06-07 16:08:19

这样做的简单方法是使用while read循环。一般格式如下:

代码语言:javascript
复制
while read var1 var2 ... varN; do something; done < inputFile

默认情况下,每个输入行都在空格上拆分,因此这基本上就是您所需要的:

代码语言:javascript
复制
while read location hostname ip; do
    printf "Ping of $hostname ($ip): "
    ping -c1 "$ip" &>/dev/null && echo "OK" || echo "FAILED"
done < ips.txt

或者,仅限于某一特定地点:

代码语言:javascript
复制
grep location ips.txt | while read location hostname ip; do
    printf "Ping of $hostname ($ip): "
    ping -c1 "$ip" &>/dev/null && echo "OK" || echo "FAILED"
done

如果我们用这个文件来测试这个:

代码语言:javascript
复制
location1 example.com 93.184.216.34
location2 google.com 8.8.8.8
location1 bad.com 123.456.7.8

我们得到:

代码语言:javascript
复制
$ grep -w "^$location" ips.txt | 
    while read location hostname ip; do     
        printf "Ping of $hostname ($ip): ";     
        ping -c1 "$ip" &>/dev/null && echo "OK" || echo "FAILED"; 
    done 
Ping of example.com (93.184.216.34): OK
Ping of bad.com (123.456.7.8): FAILED
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/523573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档