若相依 发表于 2015-1-14 20:17:30

给大家带来批量copy文件shell剧本

欢迎大家来到仓酷云论坛!称号:satoolPS:(可让同事门叫成了“傻兔”)
功效:此剧本能够批量实行下令,拷贝文件,浅易登录,无需记着使用办事用具体IP便可快速登录
申明:能够分组批量办理,单线程,不合用每组过百台装备(用也能够,就是守候前往了局工夫是非成绩)
用法:必要做ssh免暗码登录。由于是分组办理,以是必要分组设置文件/tools/function-all-ips(称号能够本人定,可是前面剧本必要援用此设置文件)设置文件格局

log_server="10.88.1.7810.88.1.47192.168.3.117"
lvs="192.168.1.141192.168.1.142"



组名=“IPIPIPIP”这类格局


工具参数:
-l浅易登录形式
satool-l组名
代码:
1
2
3
4
#satool-llvs
1)192.168.1.141
2)192.168.1.142
选择要毗连的办事器编号(Ctrl+C加入):



只必要输出1,大概2就能够间接登录,我们就不必要记着LVS的详细IP是几了
-g批量实行下令【能够加索引】下令必要
satool-g组名"cmd""num"(可选)
代码:

#satool-glvs"df-h"
192.168.1.141
FilesystemSizeUsedAvailUse%Mountedon
/dev/mapper/VolGroup00-LogVol00
13G6.9G5.5G56%/
/dev/sda199M13M82M14%/boot
tmpfs1006M01006M0%/dev/shm
192.168.1.142
FilesystemSizeUsedAvailUse%Mountedon
/dev/mapper/VolGroup00-LogVol00
13G6.9G5.5G56%/
/dev/sda199M13M82M14%/boot
tmpfs1006M01006M0%/dev/shm



这个功效年夜多半公司城市有,可是我们有这类情形,好比修正了一切某营业办事器的设置文件,办事器有20台,我不克不及一会儿全体重启,那样就会影响营业了,我们必要的是先重启前5个察看一下,没成绩以后在全体重启。为懂得决这个成绩-g到场了第四个参数就是索引(必要引号),比方:WWW组中有15台呆板,我只看前5台的负载情形。
代码:



#satool-lwww
1)192.168.1.26)192.168.1.16611)192.168.7.18716)192.168.7.153
2)192.168.1.37)192.168.3.112)192.168.7.14917)192.168.7.154
3)192.168.1.48)192.168.10.613)192.168.7.15018)192.168.7.155
4)192.168.1.59)192.168.7.18514)192.168.7.151
5)192.168.1.16410)192.168.7.18615)192.168.7.152
选择要毗连的办事器编号(Ctrl+C加入):
#satool-gwww"w""3"
192.168.1.2
23:47:34up57days,8:48,0users,loadaverage:0.00,0.01,0.00
USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT
192.168.1.3
23:47:34up57days,8:48,0users,loadaverage:1.04,0.70,0.66
USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT
192.168.1.4
23:47:34up57days,8:48,0users,loadaverage:3.29,1.34,0.84
USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT



索引参数还能够撑持正数,即反向拔取
代码:



#satool-gwww"w""-3"
192.168.7.155
23:50:36up164days,21:52,0users,loadaverage:0.80,0.40,0.24
USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT
192.168.7.154
23:50:36up168days,11min,0users,loadaverage:0.11,0.23,0.19
USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT
192.168.7.153
23:50:37up160days,6:02,0users,loadaverage:0.91,0.33,0.21
USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT



还能够撑持非一连的单选
代码:

#satool-gwww"w""146"
192.168.1.2
23:51:37up57days,8:52,0users,loadaverage:0.00,0.00,0.00
USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT
192.168.1.5
23:51:37up57days,9:34,0users,loadaverage:0.00,0.01,0.00
USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT
192.168.1.166
23:51:37up301days,11:22,0users,loadaverage:0.17,0.31,0.48
USERTTYFROMLOGIN@IDLEJCPUPCPUWHAT



-cp批量把当地的文件推送到远端办事器上(单向)【能够加索引】
satool-cp组名srcdest“num"(可选)
代码



#satool-cplvsshdmt.txt/tmp/
192.168.1.141
shdmt.txt100%49734.9KB/s00:00
192.168.1.142
shdmt.txt100%49734.9KB/s00:00



次要功效就是以上这些,其他功效都是帮助的了上面是完全代码共300多行,有点痴肥,接待会商优化



#!/bin/bash
##2012-11-21#######
##makebyG.M######
##version3.0######
red="33[31m"
end="33[0m"
yel="33[33m"
pur="33[35m"
#function-all-ipsDIR##
./tools/function-all-ips
ll=`cat/tools/function-all-ips|awk-F={print$1}|grep-v#`
grop(){
if[-z"$app"]
then
echo-e"${yel}$ll${end}"|xargs-n4|seds//]/g
elif[-z"$cmd"]
then
echo$ll|grep-w$app>/dev/null
if[$?-eq0]
then
evalecho$$app|xargs-n1
else
echo-e"${red}输出的组不在function-all-ips!!$end"
fi
elif[$#-eq2]
then
foripin`evalecho"$"$app`
do
echo-e"$red$ip$end"
ssh$ip"$cmd"
done
elif[$#-eq3]
then
total=`evalecho$$app|wc-w`
tmpnum=`echo$num|wc-w`
shuzu=(`evalecho"$"$app`)
echo$num|egrep"">/dev/null2>&1
satus=$?
if[$satus-ne0]
then
if[$tmpnum-eq1]&&[${num#-}-le$total]
then
if[$num-gt0]
then
forsin`seq0$(($num-1))`
do
ip=${shuzu[$s]}
echo-e"$red$ip$end"
ssh$ip"$cmd"
done
elif[$num-lt0]
then
num=${num#-}
rshuzu=(`evalecho"$"$app|xargs-n1|tac|xargs`)
forsin`seq0$(($num-1))`
do
ip=${rshuzu[$s]}
echo-e"$red$ip$end"
ssh$ip"$cmd"
done
fi
elif[$tmpnum-gt1]
then
forsin$num
do
if[$s-le$total];then
ip=${shuzu[$(($s-1))]}
echo-e"$red$ip$end"
ssh$ip"$cmd"
else
echo"$sismorethan$apptotal"
fi
done
else
echo"$numismorethan$apptotal"
fi
else
echo"$numisnotnumber"
fi
fi
}
ip(){
if[-z"$app"]
then
echo-e"${yel}$ll${end}"|xargs-n4|seds//]/g
else
echo"$app"|egrep^{1,3}.{1,3}.{1,3}.{1,3}$>/dev/null
stat=$?
if["$stat"-eq0]
then
ping-c1$app>/dev/null
if["$?"-eq0]
then
if[-z"$cmd"]
then
echo-e"${red}短少下令参数!!!$end"
elif[$#-eq2]
then
echo-e"$red$app$end"
ssh$app"$cmd"
fi
else
echo-e"${red}$app收集不成达${end}"
fi
else
echo-e"${red}有效的IP输出${end}"
fi
fi
}
SSH(){
if[-z"$app"]
then
echo-e"${yel}$ll${end}"|xargs-n4|seds//]/g
else
echo$ll|grep-w$app>/dev/null
if[$?-ne0]
then
echo-e"${red}输出的组不在function-all-ips!!$end"
else
PS3="选择要毗连的办事器编号(Ctrl+C加入):"
lt=`evalecho"$"$app`
selectipin$lt
do
ssh$ip
break
done
fi
fi
}
fort(){
pid=$$
foriin$ll
do
lt=`evalecho"$"$i`
cat<<EOF>>/tmp/$pid.log
$i(){
selectain$lt
do
ssh$a
break
done
}
EOF
done
./tmp/$pid.log
rm/tmp/$pid.log
PS3="Selectgroup(Ctrl+Ctoexit):"
selectipin$ll
do
PS3="Selectserver:"
$ip
break
done
}
search(){
if[-z$app];then
echo-sissearchmode
echopleaseinputIP
else
echo"$app"|egrep^{1,3}.{1,3}.{1,3}.{1,3}$>/dev/null
stat=$?
if["$stat"-eq0]
then
echo$app
grep-w$app/tools/function-all-ips|awk-F={print$1}
else
echo"有效的IP"
fi
fi
}
cps(){
if[-z"$app"]
then
echo-e"${yel}$ll${end}"|xargs-n4|seds//]/g
elif[!-z$app]&&[-z$sfile]||[!-f$sfile]
then
echo$ll|grep-w$app>/dev/null
if[$?-eq0]
then
echo-e"源文件未指定或不存在!!"
evalecho$$app|xargs-n1
else
echo-e"${red}输出的组不在function-all-ips!!$end"
fi
elif[$#-eq3]
then
foripin`evalecho"$"$app`
do
echo-e"$red$ip$end"
scp$sfile$ip:$dfile
done
elif[$#-eq4]
then
total=`evalecho$$app|wc-w`
tmpnum=`echo$num|wc-w`
shuzu=(`evalecho"$"$app`)
echo$num|egrep"">/dev/null2>&1
satus=$?
if[$satus-ne0]
then
if[$tmpnum-eq1]&&[${num#-}-le$total]
then
if[$num-gt0]
then
forsin`seq0$(($num-1))`
do
ip=${shuzu[$s]}
echo-e"$red$ip$end"
scp$sfile$ip:$dfile
done
elif[$num-lt0]
then
num=${num#-}
rshuzu=(`evalecho"$"$app|xargs-n1|tac|xargs`)
forsin`seq0$(($num-1))`
do
ip=${rshuzu[$s]}
echo-e"$red$ip$end"
scp$sfile$ip:$dfile
done
fi
elif[$tmpnum-gt1]
then
forsin$num
do
if[$s-lt$total];then
ip=${shuzu[$(($s-1))]}
echo-e"$red$ip$end"
scp$sfile$ip:$dfile
else
echo"$sismorethan$apptotal"
fi
done
else
echo"$numismorethan$apptotal"
fi
else
echo"$numisnotnumber"
fi
fi
}
case$1in
-i)
shift
app=$1
shift
cmd=$*
ip$app"$cmd"
;;
-g)
shift
app=$1
shift
cmd=$1
shift
num=$1
if[-z"$num"];then
grop$app"$cmd"
else
grop$app"$cmd""$num"
fi
;;
-cp)
shift
app=$1
shift
sfile=$1
shift
dfile=$1
shift
num=$1
if[-z"$num"]
then
if[-z$sfile]||[-z$dfile]
then
cps$app
else
cps$app"$sfile""$dfile"
fi
else
if[-z$sfile]||[-z$dfile]
then
echo
cps$app
else
cps$app"$sfile""$dfile""$num"
fi
fi
;;
-l)
shift
app=$1
SSH$app
;;
-a)
fort
;;
-s)
shift
app=$1
search
;;
*)
echo"$0[-i|-g]"
echo"-iIPcmd"
echo"-ggroupcmd常常用"
echo"-cpgroupsrcdest"
echo"-ssearchmode"
echo"-lgroup(sshusage)经常使用"
echo"-a碉堡机形式."
;;
esac



免责声明:利用工具为志愿选择,假如你对linux的硬援用和软援用不是很精晓的同砚,请只管不要利用带单引号和双引号的组合下令,只管制止利用通配符*(星号),利用的时分要思索是不是本义。假如利用本工具酿成的丧失,作者概不卖力
本文出自“拙劣”博客,请务必保存此出处http://gaoming.blog.51cto.com/822334/1350271


如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!

深爱那片海 发表于 2015-1-15 14:26:11

给大家带来批量copy文件shell剧本

沙发???

精灵巫婆 发表于 2015-2-4 10:52:29

随着Linux应用的扩展,出现了不少Linux社区。有一些非常优秀的社区往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。

兰色精灵 发表于 2015-2-9 22:20:09

眼看这个学期的Linux课程已经告一段落了,我觉得有必要写一遍心得体会来总结一下这学期对着门课程的学习。

飘飘悠悠 发表于 2015-2-28 04:30:26

熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。

愤怒的大鸟 发表于 2015-3-9 22:59:25

通过自学老师给的资料和向同学请教,掌握了一些基本的操作,比如挂载优盘,编译程序,在Linux环境下运行,转换目录等等。学了这些基础才能进行下面的模拟OS程序。?

admin 发表于 2015-3-17 07:33:59

Linux的成功就在于用最少的资源最短的时间实现了所有功能,这也是符合人类进化的,相信以后节能问题会日益突出。

简单生活 发表于 2015-3-24 05:39:16

为什么要学Linux呢?每个人都有不同的看法,下面我说说自己的感想吧。?
页: [1]
查看完整版本: 给大家带来批量copy文件shell剧本