我只想检查 linux bash 命令输出中列出的服务器上的网络接口状态
I want to check only the network interfaces status on the server which is listed in the command output on linux bash
我只想根据 network-scripts 目录中配置的接口获取关闭的接口的输出。
for i in $(ls -1 /etc/sysconfig/network-scripts/ifcfg-e*|sed 's/.*ifcfg-//g'); do grep -i 'down' /sys/class/net/$i/operstate; echo $i;done
如何根据 for 迭代的输入仅列出关闭的接口?
谢谢
我建议使用 bash,它的 Parameter Expansion 和 CentOS 7 / RHEL 7:
for i in /etc/sysconfig/network-scripts/ifcfg-e*; do
i=$(basename "$i")
grep -qi 'down' "/sys/class/net/${i#*-}/operstate" && echo "${i#*-}"
done
${i#*-}
从字符串 ifcfg-ens33
中删除 ifcfg-
以仅获取接口名称。
更新:
for i in /etc/sysconfig/network-scripts/ifcfg-e*; do
grep -qi 'down' "/sys/class/net/${i##*-}/operstate" && echo "${i##*-}"
done
${i##*-}
从字符串 /etc/sysconfig/network-scripts/ifcfg-ens33
中删除 /etc/sysconfig/network-scripts/ifcfg-
以仅获取接口名称。
实际上这个可以完成工作:
for i in $(ls -1 /etc/sysconfig/network-scripts/ifcfg-e*|sed 's/.*ifcfg-//g'); do grep -i 'down' /sys/class/net/$i/operstate &> /dev/null;[ $? -eq "0" ] && echo $i;done|awk '{printf "%s ",$i} END {print ""}'
我只想根据 network-scripts 目录中配置的接口获取关闭的接口的输出。
for i in $(ls -1 /etc/sysconfig/network-scripts/ifcfg-e*|sed 's/.*ifcfg-//g'); do grep -i 'down' /sys/class/net/$i/operstate; echo $i;done
如何根据 for 迭代的输入仅列出关闭的接口?
谢谢
我建议使用 bash,它的 Parameter Expansion 和 CentOS 7 / RHEL 7:
for i in /etc/sysconfig/network-scripts/ifcfg-e*; do
i=$(basename "$i")
grep -qi 'down' "/sys/class/net/${i#*-}/operstate" && echo "${i#*-}"
done
${i#*-}
从字符串 ifcfg-ens33
中删除 ifcfg-
以仅获取接口名称。
更新:
for i in /etc/sysconfig/network-scripts/ifcfg-e*; do
grep -qi 'down' "/sys/class/net/${i##*-}/operstate" && echo "${i##*-}"
done
${i##*-}
从字符串 /etc/sysconfig/network-scripts/ifcfg-ens33
中删除 /etc/sysconfig/network-scripts/ifcfg-
以仅获取接口名称。
实际上这个可以完成工作:
for i in $(ls -1 /etc/sysconfig/network-scripts/ifcfg-e*|sed 's/.*ifcfg-//g'); do grep -i 'down' /sys/class/net/$i/operstate &> /dev/null;[ $? -eq "0" ] && echo $i;done|awk '{printf "%s ",$i} END {print ""}'