目录
crontab 定时任务
# 编辑脚本
vi test.sh
# 赋予权限
chmod 777 test.sh
# -e : 执行文字编辑器来设定时程表
crontab -e
# 编辑定时任务,每天 0点定时执行 test.sh 脚本
0 0 * * * /root/test.sh
* * * * *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 - 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
4.1 监测进程并重启脚本
#!/bin/bash
pgrep test.sh &> /dev/null #pgrep是读取进程名为输入内容的进程号,返回到下面,&>输入到空文件
if [ $? -gt 0 ]; #$?代表上面的返回值(进程ID,当且仅当存在这个进程时才会高于0) -gt是大于号
then
echo "`date` restart" >> /var/log/test.log #`date`是当前时间,>>输出到log文件中作为新的一行,log文件也可以与脚本放在同一个目录下
/etc/init.d/shadowsocks start #进程启动命令
#调试阶段此处可以加入返回running状态的内容,去掉井号即可
#else
#echo "`date` restart"
fi
4.2 获取本机IP发送邮件
#!/bin/bash
#fix can't lock /sent
HOME='/root/'
# check network availability
while true
do
TIMEOUT=5
SITE_TO_CHECK="www.baidu.com"
RET_CODE=`curl -I -s --connect-timeout $TIMEOUT $SITE_TO_CHECK -w %{http_code} | tail -n1`
if [ "x$RET_CODE" = "x200" ]; then
echo "Network OK, will send mail..."
break
else
echo "Network not ready, wait..."
sleep 1s
fi
done
# get the IP address of eth0, e.g. "192.168.16.5"
ETH0_IP_ADDR=`ifconfig wlan0 | sed -n "2,2p" | awk '{print substr($2,1)}'`
# send the Email
echo "Current time: `date '+%F %T'`. Enjoy it. IP Address of Raspberry Pi: $ETH0_IP_ADDR" | mutt -s "email—title" 邮箱
expect 脚本自动连接服务器
expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。
命令 作用
spawn | 启动一个新的进程,用来执行后面所接的COMMAND |
expect | 期待从进程中获取的内容 |
send | 向进程发送内容 |
set timeout n | 设置超时时间,单位:秒,超过n秒则不再继续等待进程的内容返回 |
interact | 是否保留交互状态 |
#!/usr/bin/expect
set timeout 30
set usr speech # usr = root 跳板机用户名
set host 192.168.1.1 # host = ip 跳板机ip
spawn ssh $usr@$host
expect {
"(yes/no)?"
{send "yes\n";exp_continue}
"password:"
{send "123456\r"}
}
interact