自动输入密码,这样我们就可以后台执行了。
非常简单,使用expect命令,没有的话:
apt install expect
举一个下载eeg数据集的例子
编辑下面一个文件,比如叫做run_rsync.sh
#!/usr/bin/expect
# -1的意思是永不退出,直到命令结束
set timeout -1
# spawn就是启动后面的命令, -P 代表断点重连。
spawn rsync -auxvLP --delete nedc-eeg@www.isip.piconepress.com:data/eeg/xx my_dir/
# 原理: 就是你执行上面那句话的时候,弹出来的问题是什么,用正则表达式来捕获, 所以任何场景都可以用expect。
# 如果用nohup的话,就注释掉
#expect "*continue connecting*"
# 捕获以后,用send命令输入需要执行的内容,\r代表回车。
#send "yes\r"
# 捕获弹出的问题:
expect "*password*"
# 然后发送密码
send "your_password\r"
expect eof
ok了,直接执行expect run_rsync.sh
即可,如果需要后台执行:
nohup expect run_rsync.sh &
然后查看进度:
tail -f nohup.out
ok了,学会了吗?
ps:
如果想要这个eeg数据集,点这里