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
類似於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