为下载脚本传递密码
Pass password for download script
我正在下载大文件并且有一个 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 下载脚本?
这个答案试图解决你完成你需要的问题,而不是执行一个#!/usr/bin/expect
的问题,这可能是你要问的。
您可以尝试使用内联 expect
的 -c
参数。
例如,
#!/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
部分可能需要发送\r\n
到"simulate"完成的Enter键输入密码.
您可以在 for
中使用 sed
来简化行。
"assword" 是为了防止该单词首字母的大小写,"Password" vs "password",为了一些可移植性。
我正在下载大文件并且有一个 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 下载脚本?
这个答案试图解决你完成你需要的问题,而不是执行一个#!/usr/bin/expect
的问题,这可能是你要问的。
您可以尝试使用内联 expect
的 -c
参数。
例如,
#!/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
部分可能需要发送\r\n
到"simulate"完成的Enter键输入密码.您可以在
for
中使用sed
来简化行。"assword" 是为了防止该单词首字母的大小写,"Password" vs "password",为了一些可移植性。