2012-12-05 36 views
0

我有一個bash shell的部署腳本(的Linode stackscript),當我部署我的Debian 6.0服務器運行。該腳本以root身份運行和腳本如下:PostgreSQL的部署腳本攤位

apt-get update 
apt-get install postgresql postgresql-contrib pgadmin3 

passwd postgres 
su - postgres 
psql -c "ALTER USER postgres WITH PASSWORD 'changeme'" -d template1 
su - postgres 
createdb mytestdb 
psql mytestdb 

我有兩個問題:

首先,當我通過shell它的工作原理手動運行的每一行,但是當我運行它作爲stackscript它跑線passwd postgres但沒有任何事情。

其次,當我運行passwd postgres它要求我手動輸入密碼。有沒有什麼辦法可以把它作爲一個變量在shell腳本中?

回答

2

passwd意味着交互地使用。 批次中更改密碼的正確命令是chpasswd

例子:

#!/bin/sh 
echo 'postgres:newpassword' | chpasswd 

另外請注意,您的腳本不會su - postgres看起來並不像它的方式在非交互模式選項通常完成。 Better do:su -c 'command1; command2...' - postgres