2016-01-21 63 views
1

我有一個大型安裝程序,可以在啓動新機器時節省數小時,但無法正常工作現在。我想填寫一個TD驅動程序所需的配置文件,並且由於它是一個特殊的受保護的文件,我遇到了麻煩。我的蟒蛇看起來像:無法在終端「bash:/etc/odbcinst.ini:權限被拒絕」中回顯

#configure webapi driver 
ODBC_PATH  = os.path.join(HOMEPATH, '/etc/odbcinst.ini') 
ODBC_SETTINGS = """\ 
[FreeTDS] 
Description = TD Driver (MSSQL) 
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so 
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so 
FileUsage = 1""" 

call_sp('sudo echo "{}" > {}'.format(ODBC_SETTINGS, ODBC_PATH)) 

其中call_sp只是我調用一個子進程,但允許args來的方式,像POPEN一樣。我是一無所知,因爲它的失敗默默(我不知道,直到我試圖運行服務器)和外殼我沒有得到提示輸入我的密碼:

cchilders:~/scripts/setup_scripts/dimensional [master]$ sudo echo "[FreeTDS] 
Description = TD Driver (MSSQL) 
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so 
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so 
FileUsage = 1" > /etc/odbcinst.ini 
bash: /etc/odbcinst.ini: Permission denied 


cchilders:~/scripts/setup_scripts [master]$ sudo echo "somethin" > /etc/odbcinst.ini 
bash: /etc/odbcinst.ini: Permission denied 

但sudoing成納米的作品,我可以做手工:

cchilders:~/scripts/setup_scripts [master]$ sudo nano /etc/odbcinst.ini 
[sudo] password for cchilders: 

爲什麼我不能填滿來自終端文本這個ini文件,如果它是不可能的,我怎麼能自動python腳本填? Ty

+2

類似於http://stackoverflow.com/questions/84882/sudo-echo-something-etc-privilegedfile-doesnt-work-is-there-an-alterna。總之,請嘗試'sudo sh -c「echo'something'> /etc/odbcinst.ini」' – Eric

回答

1

我相信這實質上是這個thread的重複。

您是否嘗試過使用三通?

$ echo '{}' | sudo tee --append //etc/odbcinst.ini