多线程执行shell

该博客介绍了一个使用多线程在Linux环境中检查远程服务器网络连通性和SSH登录状态的脚本。通过创建有名管道和文件描述符,脚本并行执行ping和SSH命令,将无法ping通或登录失败的服务器记录在error.txt中。
摘要由CSDN通过智能技术生成

多线程执行shell

实验情况,需要查看哪些服务器可以ping通,哪些服务器可以登录,把网络不通的,和登录失败的都列出来。

#!/bin/bash

#查看是否安装sshpass服务
ssh_pass=rpm -qa|grep sshpass|wc -l
#如果结果等于0,代表没有安装,则进行安装sshpass服务
if [ $ssh_pass -eq 0 ]
then
rpm -ivh ./sshpass-1.06-2.el7.x86_64.rpm
fi
#对于未连接过的主机,对sshd进行优化
echo “StrictHostKeyChecking no” > /root/.ssh/config

#创建有名管道
[ -e /tmp/fd1 ] || mkfifo /tmp/fd1
#创建文件描述符,可以用可读(<)可写(>)的方式关联管道文件,这样文件描述符3就有了有名管道的所有特性
exec 3<>/tmp/fd1
#关联后的文件描述符拥有管道文件的所有特性,所以文件可以删除,我们留下文件描述符用就可以了
rm -f /tmp/fd1

for ((i=1;i<=10;i++))
do
#&3代表引用文件描述符3,这条命令代表往管道里面放入一个 令牌
echo >&3
done

#循环ip列表
for ip in cat ip.txt
do
#read -u3 代表从管道里提出一个令牌
read -u3
{
#查看服务器网络通信是否正常
ping -c2 $ip > ping.txt
#如果不正常则输出ip ping error到error.txt
tong=cat ping.txt|grep 'ttl'|wc -l
if [ t o n g − e q 0 ] t h e n e c h o " tong -eq 0 ] then echo "

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值