无法在终端“bash:/etc/odbcinst.ini:权限被拒绝”中回显[重复]

Posted

技术标签:

【中文标题】无法在终端“bash:/etc/odbcinst.ini:权限被拒绝”中回显[重复]【英文标题】:can't echo in terminal "bash: /etc/odbcinst.ini: Permission denied" [duplicate] 【发布时间】: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脚本?类型

【问题讨论】:

类似于***.com/questions/84882/…。总之,请尝试sudo sh -c "echo 'something' > /etc/odbcinst.ini" 【参考方案1】:

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

你试过用 tee 代替吗?

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

【讨论】:

以上是关于无法在终端“bash:/etc/odbcinst.ini:权限被拒绝”中回显[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在ubuntu的终端上我无法输入自己的password 咋办?

Ubuntu升级python3.7之后导致终端无法打开的解决办法

终端里为啥无法运行python?

无法在终端上进行彩色打印

无法从终端使用 git

无法在终端上运行 php/mysql 脚本