[英]How can I automatically respond to a password prompt via the command line?
我希望在linux終端中響應密碼提示。 我知道如何使用echo
和非密碼提示來執行此操作。 例如,假設whatsyourname.sh
在運行后提示我輸入一個帶有我的名字的字符串,但不允許我的名字作為inital命令中的參數傳遞。 我將執行以下操作:
echo -e "dan" | ./whatsyourname.sh
但是,如果我運行的命令在運行后要求我輸入密碼 ,則以下命令將不起作用:
echo -e "supersecurepassword" | sudo apt-get update
我猜測這與以下事實有關:在命令行中輸入密碼時,字符被隱藏了。 我將如何響應inital命令中的密碼提示?
您在尋找sudo -S
解釋-S- man sudo
-S,--stdin將提示寫入標准錯誤,並從標准輸入中讀取密碼,而不使用終端設備。 密碼后必須帶有換行符。
簡單,
#!/bin/bash
echo "notsecure" | sudo -S apt-get update
變量,
#!/bin/bash
pass="notsecure"
echo $pass | sudo -S apt-get update
讓我們仍然輸入
#!/bin/bash
read -s -p "[sudo] sudo password for $(whoami): " pass
echo $pass | sudo -S apt-get update
解釋-s和-p- help read
-r不允許反斜杠轉義任何字符
-s不回顯來自終端的輸入
例如,如果您制作一個腳本登錄多個服務器以查看route -n
方便。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.