我有一个大型安装程序,当我启动一台新机器时,它可以节省数小时,但是我现在无法让一件事工作。我想填写TD驱动程序所需的配置文件,由于它是一个特殊的受保护文件,所以我遇到了麻烦。我的蟒蛇看起来像:
#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
只是我调用子进程但允许参数的方式,就像 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 脚本?泰
我相信
这本质上是这个线程的副本。
您是否尝试过使用 T 恤?
$ echo '{}' | sudo tee --append //etc/odbcinst.ini