簡體   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