我有一个大型安装程序,可以在我启动新机器时节省数小时和数小时,但我现在无法完成一件事。我想填写一个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
答案 0 :(得分:1)