传递下载脚本的密码

时间:2019-04-20 02:19:22

标签: bash passwords

我正在下载大文件,并且具有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下载脚本?

1 个答案:

答案 0 :(得分:1)

此答案试图解决您完成所需内容的问题,而不是执行可能是您要问的执行#!/usr/bin/expect的问题。

您可以尝试内联使用-c的{​​{1}}参数。

例如

expect

注意:

  1. 您的#!/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 键。

  2. 您可以在\r\n中使用sed来简化行。

  3. “密码”是为了防止该单词的首字母“ Password”与“ Password”出现这种情况,以便于移植。