【问题标题】:Running a user interactive cmd with crontab without user interaction使用 crontab 运行用户交互式 cmd,无需用户交互
【发布时间】:2015-04-03 08:53:32
【问题描述】:

我有一个带有 2 个参数的命令。

当我手动运行命令时,我是这样做的:

cmd -i xyz.dat 
hit enter
enter password in the prompt
hit enter
confirm password

命令运行成功。

当我在 crontab 中执行此操作时,每 30 分钟运行一次,如下所示:

30 *  *  *  * /$HOME/cmd -i xyz.dat mypwd   mypwd

cmd-脚本在我手动运行时需要用户交互(输入密码)。 您能否帮助我如何在没有用户交互的情况下运行 crontab 作业?

感谢您的帮助!

【问题讨论】:

  • 不是每 30 分钟运行一次;它每小时运行一次,每小时 30 分钟。将30 替换为*/300,30。看起来您的命令提示输入密码。从 cron 作业中输入密码会很棘手。您可以修改 cmd 以将密码作为命令行参数,但这是不安全的,因为您的 crontab 中必须以明文形式提供密码。
  • 我不知道cmd 做了什么,除了它显然以交互方式读取密码。我不知道它是从标准输入、/dev/tty 还是通过其他机制读取的。我想您仍然需要以某种方式向cmd 提供密码,但是没有足够的信息来说明更具体的内容。
  • 我尝试运行的命令是 gsa_logger -i login.dat 当我按下回车键时,它会提示输入密码,再次输入会提示密码确认。
  • 我不知道gsa_logger 是什么。我认为您的真正问题更多是关于以非交互方式运行gsa_logger,而不是关于 crontab。我建议更新问题。 (不要假设人们会在 cmets 中看到信息。)

标签: crontab aix


【解决方案1】:

我的两个建议是:

  1. 尝试将密码回显到脚本(手动)以查看该命令是否会从标准输入读取密码。您可以将密码隐藏在包装脚本中(无论如何,不​​要将其置于 cron 之外)。

  2. 使用 expect 来提供输入

【讨论】:

    猜你喜欢
    • 2016-11-22
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2017-11-04
    • 2016-10-17
    • 2021-09-17
    • 1970-01-01
    相关资源
    最近更新 更多