[英]"Cache" credentials on a bash script
我創建了一個 bash 腳本來在 MongoDB 中運行一些 js 腳本。 基本上,我正在做的是,運行 bash 腳本並在這種情況下傳遞一個名為 version 的參數,例如:
./script.sh 1.0
這將執行版本 1.0 的所有腳本。 現在,MongoDB 可能需要身份驗證用戶/密碼,所以我在腳本執行中有一個選項,它會詢問用戶是否需要身份驗證。
read -p "Username: " mongo_user; read -s -p "Password: " mongo_pass;
我的問題是:將相同的憑據緩存多次調用腳本的最佳方法是什么? 例如:
./script.sh 1.0
./script.sh 1.1
./script.sh 1.2 and on..
我不想在每次腳本運行時都輸入相同的憑據。
凱歐,
正如我的評論中所述,我是如何做到的:
感謝 Charles Duffy 提供printf
解決方案:
#!/bin/bash
ePass() {
read -sp "Password: " pass
echo ""
printf '%s\n' "$pass" | perl -e 'chomp($passwd=<>); chomp($encoded=pack("u",$passwd));print "$encoded\n"' > .pswd
cat .pswd
}
dPass() {
dPass=`cat .pswd | perl -e 'chomp($encoded=<>); chomp($passwd=unpack("u",$encoded)); print "$passwd\n"'`
echo $dPass
}
ePass
dPass
您可以將這些函數添加到您的腳本中。 當您想設置密碼時,ePass 將執行以下操作:
[KUBO@home ~]$ ./test.sh
Password:
它將屏蔽輸入以避免過肩閱讀。 然后它會回顯編碼的輸出(測試后刪除):
Password: Hello >>> %2&5L;&\`
然后你 dPass:
Hello
因此,當您調用 mongo 腳本時,您可以使用 dPass 輸出作為參數。
comp@rangeesh:~$ export USERNAME=user
comp@rangeesh:~$ export PASSWORD=pass
comp@rangeesh:~$ echo $USERNAME
user
comp@rangeesh:~$ echo $PASSWORD
pass
comp@rangeesh:~$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.