shell脚本输出多个主机的网卡速率

背景:

记录下之前的写过的shell脚本,需要整理出各个主机的各个网卡速率,网卡名称为bond0到bond3,使用ethtool bond1命令可以查看相应网卡的速率。因为有几十台主机,所以考虑使用shell脚本去查询。

具体思路:

查询单台主机单网卡速率命令:

ethtool bond1 | grep Speed
Speed: 20000Mb/s

查询单台主机所有bond网卡速率命令,输出网卡名称和对应的网卡速率:

for i in {0..3};do echo bond$i `/usr/sbin/ethtool bond$i 2 > /dev/null | grep Speed`;done
bond0
bond1 Speed: 20000Mb/s
bond2 Speed: 20000Mb/s
bond3 Speed: 2000Mb/s

查询远程主机所有bond网卡速率命令,可以使用ssh -tt远程执行命令:

ssh -tt [email protected] "command "

需要查询的IP都在/etc/hosts文件,
文件格式:
192.168.1.1 compute-1
192.168.1.2 compute-2
筛选出192网段的IP

cat /etc/hosts | grep 192  |  cut -d‘ ‘ -f1

使用expect自动输入密码

完整脚本:

#!/bin/bash
cat /etc/hosts | grep 192 | while read line
do
echo $line
ip=`echo $line | cut -d‘ ‘ -f1`
/usr/bin/expect <<-EOF
spawn ssh -tt [email protected]$ip "for i in {0..3};do echo bond\$\i \`/usr/sbin/ethtool bond\$\i 2>/dev/null | grep Speed\`;done "
expect {
        "(yes/no)?" { send "yes\n";exp_continue }
        "*assword:" { send "password\n";}
}
expect eof
EOF
done

总结

对shell脚本格式还不太熟,脚本格式跟直接执行命令出来的结果还是有不少区别的,还是需要多学习shell脚本方面的知识。

原文地址:https://blog.51cto.com/eddy72/2459806

时间: 2024-07-31 02:02:34

shell脚本输出多个主机的网卡速率的相关文章

linux c程序中获取shell脚本输出的实现方法

linux c程序中获取shell脚本输出的实现方法 1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作.比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令.但是,system函数仅返回命令是否执行成功,而我们可能需要获得shell命令在控制台上输出的结果.例如,执行外部

面试笔试-脚本-1:使用shell脚本输出登录次数最多的用户

原题目: 一个文本类型的文件,里面每行存放一个登陆者的IP(某些行是重复的),写一个shell脚本输出登陆次数最多的用户. 之前刚看到这个题目时,马上没有想到一行直接解决的办法,虽然知道可以先进行排序,但是后面由于对uniq命令的参数不熟悉,所以用了比较背的办法,就是直接编写shell脚本程序来解决这个问题. 现在假设测试数据如下: 111.111.111.111 10.10.10.10 222.222.222.222 111.111.111.111 333.333.333.333 10.10.

inux C程序中获取shell脚本输出(如获取system命令输出)

转载自 http://blog.csdn.net/hjxhjh/article/details/7909518 1. 前言 Unix 界有一句名言:"一行shell脚本胜过万行C程序",虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作.比如实现一个 ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令.但是,system函数仅返回命令是否执行

常用的主机监控Shell脚本

最近时不时有朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性. 下面是我常用的几个主机监控的脚本,大家可以根据自己的情况在进行修改,希望能给大家一点帮助. 1.查看主机网卡流量 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #!/bin/bash #!/bin/bash #network #Mi

执行系统命令并且将输出写入到日志文件的shell脚本

大概需求是这样的,执行aix系统usysfault命令取故障灯信息,但是这个命令似乎只有root用户才能执行,其他用户执行就报错.想尽了各种办法赋权都以失败告终,所以想到写shell脚本用root用户来执行将结果写入到log文件中,然后我们来读文件取数据就好了,不用执行aix死活都不让我们执行的命令. shell脚本如下: ! /usr/bash while true #循环执行 do { date +"%Y-%m-%d %H:%M:%S" #取当前日期和时间 uname #要执行的命

工程师技术(五):Shell脚本的编写及测试、重定向输出的应用、使用特殊变量、编写一个判断脚本、编写一个批量添加用户脚本

一.Shell脚本的编写及测 目标: 本例要求两个简单的Shell脚本程序,任务目标如下: 1> 编写一个面世问候 /root/helloworld.sh 脚本,执行后显示出一段话"Hello World!!"   2> 编写一个能输出系统信息的 /root/sysinfo 脚本,执行后依次输出当前红帽系统的版本信息.当前使用的内核版本.当前系统的主机名 方案: 规范Shell脚本的一般组成: 1> #! 环境声明(Sha-Bang)    2> # 注释文本 

Java实践-远程调用Shell脚本并获取输出信息

1.添加依赖 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>262</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId&g

shell 脚本编程之信号捕捉和主机探测

shell 脚本编程之信号捕捉和主机探测 =============================================================================== 概述: =============================================================================== 主机探测 1.写一个脚本,探测192.168.0.0网段中主机在线状态 [[email protected] bin]# cat 

php管理nginx虚拟主机shell脚本

使用php作为shell脚本是一件很方便的事情.理所当然,我们可以使用php脚本来管理 nginx虚拟主机,下面是笔者的 脚本 文件供各位参考 代码如下 复制代码 #!/usr/bin/php -q<?php start: fwrite(STDOUT,"===========Vhost Script===========\n");fwrite(STDOUT,"= Choose an operation \n");fwrite(STDOUT,"= 1.