自动化要求输入密码的shell脚本

时间:2017-07-20 19:03:03

标签: bash shell automation

我有一个复杂的shell脚本,它调用各种其他脚本。这个脚本中的一些命令提示输入sudo密码。我正在编写一个包装脚本来自动执行此操作。 因此,通过在线研究,我发现了以下内容:

  1. 创建一个没有密码的sudoer文件,但似乎必须提供一个命令列表,这些条件将适用于该条件。我不想搜索脚本中的哪个命令正在调用sudo密码提示,因为这会占用太多时间。

  2. 期待效用。这适用于expect解释器,我不能生成脚本,因为spawn是一个期望的解释器命令。所以,基本上下面的代码与expect一起工作:

  3. #!/usr/bin/expect
    spawn sudo su
    expect "*assword"
    send "abc12\n"
    interact
    

    但我需要的是:

    #!/usr/bin/expect
    spawn ./complex_script.sh <arg1> <arg2>
    expect "*assword"
    send "abc12\n"
    interact
    

    当我运行此操作时,我收到以下错误: 无法执行&#34; complex_script.sh&#34;:没有这样的文件或目录     执行时 &#34;产生complex_script.sh rootfs&#34;     (文件&#34; ./ a.sh&#34;第2行)

    1. 回显密码| script.sh也不起作用。
    2. 提前致谢。

1 个答案:

答案 0 :(得分:0)

就我所见,代码很好。由于此行使用相对路径spawn ./complex_script.sh <arg1> <arg2>

,因此很可能出现错误消息“没有此类文件或目录”

尝试并使用完整路径,脚本应按预期工作。

相关问题