当我尝试使用需要 sudo 访问权限的任务假脱机程序运行任务时,例如
ts sudo echo "hello world"
它不要求我输入密码并退出并显示错误 1
或者,我有一些任务在执行过程中可能需要输入密码。我该如何与之交互?
答案1
运行的内容ts
未连接到终端。我假设您不想设置为sudo
无密码工作。那么您需要在没有终端的情况下提供密码。这可以通过以下方式完成sudo -A
:
-A
通常,如果sudo
需要密码,它会从用户终端读取密码。如果-A
指定了 (askpass) 选项,则会执行(可能是图形化的)辅助程序来读取用户密码并将密码输出到标准输出。如果SUDO_ASKPASS
设置了环境变量,它会指定辅助程序的路径。[…]
编写一个辅助脚本。该脚本应该只打印您的密码。示例脚本位于这是我的另一个答案。
然后你可以这样做:
SUDO_ASKPASS="/path/to/helper/script" sudo whatever
正确ts
的语法是:
SUDO_ASKPASS="/path/to/helper/script" ts sudo whatever
脚本如何知道密码取决于你。密码可能是硬编码的(如示例中所示),存储在文件中(脚本将只是cat file
),通过连接到某个代理或以交互方式从你那里获取(例如通过显示 GUI 窗口;阅读在脚本中使用 sudo 时,如何通过 GUI 提示询问密码?)。
您现在关心的是确保脚本(以及文件,如果有)的安全。