自动输入密码,这样我们就可以后台执行了。
非常简单,使用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数据集,点这里

文章介绍了如何利用expect命令在Linux中自动输入密码,以实现后台执行rsync进行数据集的下载。通过创建run_rsync.sh脚本,设置spawn命令启动rsync,并用expect捕获并应答密码提示,从而无须人工交互。最后,可以通过nohup命令将脚本放到后台运行,并使用tail-f监控输出日志。

4418

被折叠的 条评论
为什么被折叠?



