[英]Bash script : Login to postgres home from shell script
我必須從我的postgres數據庫中獲取數據轉儲。
我如何登錄postgres主頁? 。 我有以下腳本,但它不起作用:
#!/bin/sh$
export PASSWORD= something
echo $PASSWORD | sudo -S su postgres
pg_dump somedb > dump.txt+`date +%Y-%m-%d`
但是當我運行這個腳本時,我沒有登錄到postgres@gauss:$
同時腳本不會拋出錯誤。 我在這里做錯了嗎?
你的腳本失敗的原因是該行
echo $PASSWORD | sudo -S su postgres
導致su
分叉一個從屬shell。 該shell試圖從讀取密碼的sudo -S
已經耗盡的標准輸入中讀取。 當shell找不到更多輸入(EOF)時,它會退出。 然后執行腳本的下一行,就好像引用的行從未發生過一樣,因此在您的UID下運行。
請參閱j.hloetzek的答案,以便更好地完成您想要的操作。
粘貼的腳本中也包含兩個語法錯誤,但無論如何都不應該使用該方法。
您無法將密碼傳遞給sudo
命令,但可以在/etc/sudoers
允許在沒有密碼的情況下運行某些命令(請檢查確切的語法!)
username YOURUSERNAME = NOPASSWD: /sbin/su postgres
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.