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

问题描述 投票:0回答:4

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

如何处理这种情况?

linux bash crontab
4个回答
3
投票

如果从stdin接收输入,请制作另一个脚本,该脚本将通过管道或重定向来调用您的脚本。

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

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

0 * * * * /bin/sh -c "/foo/bar/my_command < my_input"

1
投票
  1. 修改脚本,因此不需要用户输入。

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

只要有可能,“预期的用户输入”就是密码:请勿使用选项2。将访问身份验证编辑到crontab作业中有多种危险。

PS:如mvp所建议,如果您正在考虑expect,以上警告同样适用。从根本上讲,这等效于在便利贴上写下您的密码并将其粘贴到显示器上:简便,方便且根本不安全。


0
投票

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

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


0
投票

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

0 * * * * /bin/sh -c "yes | /foo/bar/my_command"
© www.soinside.com 2019 - 2024. All rights reserved.