文件描述
dn:存放待加热的域名的文件
src_dst_ip:存放递归器ip以及与递归器同城的客户机地址对
hot.sh : 主程序,利用多进程完成加热效果
dig.sh :利用与递归器同城的客户机,对该递归器发起指定域名的请求
tst.sh: 利用expect,远程登录与递归器的同城客户机,将加热脚本(即dig.sh)、dn、src_dst_ip拷贝到客户机中,并令其执行dig.sh
hot.sh
#!bin/bash
p=0
while(true)
do
let p++
m=1
for src_dst_ip in `cat ./src_dst_ip | awk '{printf ("%s,%s\n",$1,$2);}'`
do
{
let m++
echo $src_dst_ip > tmp
src_ip=`cat tmp |awk -F ',' '{print $1}'`
dst_ip=`cat tmp |awk -F ',' '{print $2}'`
expect tst.sh $src_ip LOGIN PASSWORD $dst_ip &
if (( m==11 ))
then
let m=1
wait
fi
}
done
done
tst.sh
#!/usr/bin/expect -f
if { $argc < 3 } {
puts stderr "Usage: $argv0 IPAdress Login OldPasswd"
exit
}
set IPADDR [lindex $argv 0]
set LOGIN [lindex $argv 1]
set OLD_PW [lindex $argv 2]
set DIGUIQI [lindex $argv 3]
set timeout 30
#stty -echo
spawn scp -P 57891 /home/dig.sh /home/dn watch@$IPADDR:~/
expect {
"*yes/no*" {
send "yes"
}
"*password:*" {
send "$OLD_PW\r"
}
"*Last login:*" {
interact
# exit 0
}
timeout {
send_user "connection to $IPADDR timeout!\n"
# exit 1
}
"*incorrect*" {
send_user "password incorrect!\n"
# exit 2
}
"*Permission*" { #for LINUX ssh
send_user "password Error!\n"
# exit 2
}
}
expect eof
spawn ssh -o StrictHostKeyChecking=no -p 57891 <a target=_blank href="mailto:LOGIN@$IPADDR">LOGIN@$IPADDR</a>
expect {
"*password:*" {
send "$OLD_PW\r"
}
}
expect {
"*]$*" {
send "sh ~/dig.sh $DIGUIQI\n"
}
}
expect {
"*; <<>>*" {
exp_continue
}
"*]$*" {
send "exit\r"
}
}
expect eof exit
dig.sh
#!bin/bash
i=0
j=1
h=0
for dn in `cat dn`
do
for(( h=0;h<6;h++ ))
do
dig @$1 $dn | tee result.txt | grep "NOERROR"
if [[ $? == 0 ]]
then
cat result.txt
let i++
echo $i
break;
fi
cat result.txt
sleep 1s
done
if [[ $i == 8 ]]
then break
fi
done