expect实现单台、多台服务器批量scp传输文件
今天公司同事要在一台服务器上对另外两台同机房的服务器进行文件传输,两台服务器的文件存放地址一致,密码和key也一致(我们公司在安全上做得有点变态的),为了效率写了下面这个脚本.
1.单台传输脚本
cat /root/soft_shell/allscp.sh
#!/usr/bin/expect if {$argc < 2} { send_user "usage: $argv0 src_file username ip dest_file passwordn" exit } ##set key [lindex $argv 0] set src_file [lindex $argv 0] set username [lindex $argv 1] set host_ip [lindex $argv 2] set dest_file [lindex $argv 3] set password [lindex $argv 4] ##spawn scp -i $key $src_file $username@$host_ip:$dest_file spawn scp $src_file $username@$host_ip:$dest_file expect { "(yes/no)?" { send "yesn" expect "password:" {send "$passwordn"} } "password:" { send "$passwordn" } } expect "100%" expect eof
2.多台传输脚本
cat /root/soft_shell/mainscp.sh
#!/bin/bash host_list="server_list.conf" cat $host_list | while read line do host_ip=`echo $line|awk '{print $1}'` username=`echo $line|awk '{print $2}'` password=`echo $line|awk '{print $3}'` src_file=`echo $line|awk '{print $4}'` dest_file=`echo $line|awk '{print $5}'` ##key=`echo $line|awk '{print $6}'` ##./allscp.sh $key $src_file $username $host_ip $dest_file $password ./allscp.sh $src_file $username $host_ip $dest_file $password done
3.服务器信息文件
cat /root/soft_shell/server_list.conf
格式为:
ip 用户名 密码 源文件 目标文件地址
ps:以上3个文件,相信大家都看出来了,都是放在同一文件夹下面的.我本地测试只用ssh密码,没有加上ssh key,如果要用上跟我们公司正式环境一样的安全方式(ssh密码+key,才能登录服务器),那么请自己修改脚本文件,我比较懒这里就不说得那么详细了.
最后来张效果图吧,免得大家说我脚本有问题.
Shell脚本实现关闭多余的tty终端
今天给公司新部署服务器进行优化,发现了tty终端居然有6个,为了节省点内存,决定只留一个tty终端,其他的都关闭掉,但centos6跟centos5的终端关闭方法完全变
Shell脚本实现监控iptables规则是否被修改
最近看了一篇通过nagios实现MD5实时监控iptables状态的文章,就想是否可以用shell也做到监控iptables规则改变,经过实验,就有了下面这个脚本.系统:centos5.x脚本
Shell脚本实现监控rsync数据是否传输完
今天有台服务器a要把网站程序全部传输到另外一台服务器b上去,但离下班时间就只有1个小时了,为了准时下班,简单写了个shell脚本来监控是否有传输完,