我有一个在cronjob脚本运行。 但是该脚本正在采取一些用户input。
我该如何处理这种情况?
如果它正在从stdin输入,则创建另一个脚本,用管道或重定向来调用脚本。
#!/bin/sh /foo/bar/my_command < my_input
您也可以在crontab中将其作为shell命令启动:
0 * * * * /bin/sh -c "/foo/bar/my_command < my_input"
修改脚本,使其不需要用户输入。
通过<
从文件中提供脚本所需的输入。
以防万一“预期的用户输入”是一个密码: 不要使用选项2.编辑访问认证到crontab作业是各种各样的危险。
PS:上面的警告也是如此,如果你正在考虑expect
,如mvp所示。 它基本上相当于在邮件上写下密码,并将其粘贴到监视器上:简单,方便,并且不安全。
您可以使用expect来模拟脚本中的手动用户输入。 即使您的脚本不接受重定向(可能需要输入密码),这也是有效的。
在实践中,我发现Perl Expect比裸露的expect
更容易编写脚本。