无法在终端回显“bash:/etc/odbcinst.ini:Permission denied”

时间:2016-01-21 20:14:37

标签: python bash shell

我有一个大型安装程序,可以在我启动新机器时节省数小时和数小时,但我现在无法完成一件事。我想填写一个TD驱动程序所需的配置文件,因为它是一个特殊的受保护文件,我有点麻烦。我的python看起来像:

#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那样。我无能为力,因为它失败了(我不知道直到我尝试运行服务器)并且在shell中我没有得到提示我的pw:

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

但对纳米作品表示不满,我可以手动完成:

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

为什么我不能用终端中的文本填充这个ini文件,如果不可能,我怎么能自动填写python脚本? TY

1 个答案:

答案 0 :(得分:1)

我认为这基本上与此thread重复。

您是否尝试过使用T恤?

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