繁体   English   中英

如何在 cronjob 脚本中提供用户输入

[英]How to give user input in cronjob script

我在 cronjob 中运行了一个脚本。 但是该脚本正在接受一些用户输入。

我该如何处理这种情况?

如果它从 stdin 获取输入,请制作另一个脚本,该脚本将使用管道或重定向来调用您的脚本。

#!/bin/sh
/foo/bar/my_command < my_input

您还可以在 crontab 中将其作为 shell 命令启动:

0 * * * * /bin/sh -c "/foo/bar/my_command < my_input"
  1. 修改脚本,使其不需要用户输入。

  2. 通过< ,从文件中为脚本提供所需的输入。

以防万一“预期的用户输入”是密码:不要使用选项 2。将访问身份验证编辑到 crontab 作业中是各种危险的。

PS:如 mvp 所建议的expect ,如果您正在考虑expect ,则上述警告也是正确的。 这基本上相当于在便利贴上写下您的密码并将其贴在您的显示器上:简单、方便,但根本不安全。

您可以使用expect来模拟用户手动输入到您的脚本中。 即使您的脚本不接受重定向(如果需要输入密码,则可能),这也有效。

在实践中,我发现与裸expect相比,Perl Expect更容易编写脚本。

如果您只需要在脚本中确认(是),crontab 可能如下所示:

0 * * * * /bin/sh -c "yes | /foo/bar/my_command"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM