【问题标题】:Automate shell script which asks for password自动化要求输入密码的 shell 脚本
【发布时间】:2017-07-20 19:03:02
【问题描述】:

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

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

  2. 期待实用程序。这适用于期望解释器,我无法生成脚本,因为 spawn 是期望解释器命令。因此,基本上下面的代码适用于期望:

#!/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

当我运行它时,我收到以下错误: 无法执行“complex_script.sh”:没有这样的文件或目录 在执行时 “产生 complex_script.sh rootfs” (文件“./a.sh”第 2 行)

  1. 回显密码 | script.sh 也不起作用。

提前致谢。

【问题讨论】:

  • 为什么不以 root 身份启动脚本而忘记 sudo 命令?
  • 错误是找不到要生成的脚本。您是否尝试过使用绝对路径?

标签: bash shell automation


【解决方案1】:

就我所见,代码很好。由于此行使用了相对路径spawn ./complex_script.sh &lt;arg1&gt; &lt;arg2&gt;

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

尝试使用完整路径,脚本应该可以正常工作。

【讨论】:

    猜你喜欢
    • 2021-05-12
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    相关资源
    最近更新 更多