shell并发脚本

 

 1 #!/bin/bash
 2 
 3 #中控机远程并发操作多台服务器(要求已经配好了公私钥)
 4 #writen by hushi at 2017.10.19
 5 
 6 ip_list=/scripts/yujian.txt
 7 
 8 bingfa()
 9 {
10     thread=5    #并发线程数
11     tmp_fifo_file="/tmp/$$.info"    #命名管道 
12     trap "exec 1000>&-; exec 1000<&-; exit 0" 2    #匹配ctrl+C
13     mkfifo $tmp_fifo_file        #创建管道
14     exec 1000<>$tmp_fifo_file      #创建文件描述符1000,以读写方式操作管道
15     rm -rf $tmp_fifo_file        #删除创建的管道
16 
17     for ((i=0;i<${thread};i++))    
18     do
19         echo >&1000
20     done
21 
22     for ip in `cat ${ip_list}|grep "cn-beijing"|awk '{print $1}'`
23     do
24         read -u1000
25             {
26             zu_id=`cat ${ip_list}|grep -w "$ip"|awk '{print $8}'`
27             ssh $ip "cd /data1/yujian/${zu_id}/log && cat l.log|grep "test" >/tmp/${zu_id}.txt && echo -e '----${ip}----${zu_id}----\e[32m成功\e[0m'" &>/dev/null
28             echo >&1000
29             }&
30     done
31 
32 wait
33 exec 1000>&-  
34 }
35 
36 bingfa

本来是想写一个子脚本,然后bash 子脚本得到结果,但是这样的话,需要在中控机上将得到的结果传回来,然后又去远端将传过去的脚本和结果删除。

因为只有中控机到服务器是免密的,服务器到中控需要中控密码。、

scp 源 目的

  scp 远端ip远端文件 本地  #需要远端密码

  scp 本地 远端ip远端文件  #需要远端密码

 

ssh  ip “  ”  引号内可以写多条命令,使用&&连接起来

 

posted @ 2017-10-20 10:14  jiamiu  阅读(235)  评论(1编辑  收藏  举报