簡體   English   中英

如何通過命令行自動響應密碼提示?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM