0

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

我该如何处理这种情况?

4

4 回答 4

3

如果它从标准输入获取输入,请创建另一个脚本,该脚本将使用管道或重定向调用您的脚本。

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

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

0 * * * * /bin/sh -c "/foo/bar/my_command < my_input"
于 2013-11-08T10:17:18.450 回答
1
  1. 修改脚本,使其不需要用户输入。

  2. 通过<.

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

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

于 2013-11-08T10:17:54.953 回答
0

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

在实践中,我发现 Perl Expect比 bare 更容易编写脚本expect

于 2013-11-08T10:17:37.383 回答
0

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

0 * * * * /bin/sh -c "yes | /foo/bar/my_command"
于 2020-02-13T07:29:36.037 回答