我正在下载大文件,并且具有python下载脚本。由于数据量巨大,无法以原始格式存储,因此我只下载了几年,对其进行处理,然后删除原始数据,然后再下载下几年。每隔几年,我都会有一个单独的下载脚本,而我只是构建了一个快速的bash脚本来运行它们
#!/bin/bash
python download_1901-1909.py
## processing, delete
python download_1910-1919.py
## processing, delete
python download_1920-1929.py
## processing, delete
[...]
对于下载密码,我必须输入密码。我知道可以通过spawn进行一些自动密码传递,但是我无法使其工作。尝试产生东西可以做到这一点
#!/usr/bin/expect -f
spawn python download_1901-1909.py
expect "Password:"
send "mypassword"
interact
收益
sh test.sh
test.sh: line 2: spawn: command not found
couldn't read file "Password:": no such file or directory
test.sh: line 4: send: command not found
test.sh: line 5: interact: command not found
如何将密码传递给python下载脚本?
答案 0 :(得分:1)
此答案试图解决您完成所需内容的问题,而不是执行可能是您要问的执行#!/usr/bin/expect
的问题。
您可以尝试内联使用-c
的{{1}}参数。
例如
expect
注意:
您的#!/bin/bash
expect -c "spawn python download-1901_1909.py; expect \"assword\"; send \"mypassword\r\n\"; interact"
expect -c "spawn python download-1910_1919.py; expect \"assword\"; send \"mypassword\r\n\"; interact"
# and the remaining, similarly
部分可能需要发送send
以“模拟”完成输入密码的 Enter 键。
您可以在\r\n
中使用sed
来简化行。
“密码”是为了防止该单词的首字母“ Password”与“ Password”出现这种情况,以便于移植。