簡體   English   中英

Bash腳本:從shell腳本登錄到postgres主頁

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

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