【问题标题】:can't echo in terminal "bash: /etc/odbcinst.ini: Permission denied" [duplicate]无法在终端“bash:/etc/odbcinst.ini:权限被拒绝”中回显[重复]
【发布时间】:2016-04-28 06:29:02
【问题描述】:

我有一个大型安装程序,当我启动一台新机器时,它可以节省大量时间,但我现在无法让一件事正常工作。我想填写一个 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 只是我调用子进程但允许 args 的方式,就像 Popen 一样。我一无所知,因为它默默地失败了(直到我尝试运行服务器我才知道)并且在 shell 中我没有提示我输入密码:

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

但是 sudo 进入 nano 可以,我可以手动完成:

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

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

【问题讨论】:

标签: python bash shell


【解决方案1】:

我相信这本质上是 thread 的复制品。

你试过用 tee 代替吗?

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

【讨论】:

    猜你喜欢
    • 2018-07-28
    • 2021-11-25
    • 2023-04-03
    • 2016-02-27
    • 1970-01-01
    • 2016-04-25
    • 2018-06-23
    • 2021-12-11
    • 1970-01-01
    相关资源
    最近更新 更多