linux - 远程 SUDO ssh 脚本中的 SED

标签 linux bash ssh sed remote-access

我试图在 1000 台服务器上运行 yum 时禁用 RHN 检查。它是由以下人员完成的:

编辑此文件 /etc/yum/pluginconf.d/rhnplugin.conf

[main]
enabled = 0 

我编写了一个脚本来远程执行此操作。我们正在使用个人帐户,我需要使用 SUDO 执行此命令:

for HOST in $(cat serverlist ) ; do echo $HOST; ssh -o ConnectTimeout=5 -oStrictHostKeyChecking=no $HOST -t 'sudo cp /etc/yum/pluginconf.d/rhnplugin.conf /etc/yum/pluginconf.d/rhnplugin.$(date +%F) ; sudo sed -i -e "s/1/0/g" /etc/yum/pluginconf.d/rhnplugin.conf ' ; done

我知道这是一条很长的线,但为什么行不通?

所有单独的命令都独立运行

sudo cp /etc/yum/pluginconf.d/rhnplugin.conf /etc/yum/pluginconf.d/rhnplugin.$(date +%F)

sudo sed -i -e "s/1/0/g" /etc/yum/pluginconf.d/rhnplugin.conf

已尝试转义特殊字符:

sudo sed -i -e "s\/1\/0\/g" /etc/yum/pluginconf.d/rhnplugin.conf

但是我总是报错:

sed: -e expression #1, char 1: unknown command: `?'

感谢您的帮助。

最佳答案

sudo(1) 命令需要一个伪电传打字机 (pty),如果没有看到则失败。重写您的命令行以改为使用 su(1)。使用您本地的 sudo(1) 配置来限制对此脚本的访问,因此只有少数人可以执行该脚本。

关于linux - 远程 SUDO ssh 脚本中的 SED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30138800/

相关文章:

linux - 在 linux CPU 负载中包含 glibtop

linux - 如何捕获任何程序的 SIGSEGV?

linux - 在 bash 脚本中合并两个文本文件

java - 适用于 Android 的 SSH 服务器库

ssh - 双显示器 : gnome-session over ssh with x11 forwarding - set resolution to fit on just one monitor

linux - 有人知道兼容 Linux 的 USB 邮资秤吗?

linux - 如何在CentOS上设置域名服务器?

linux - 如何将 sed 与需要转义的变量一起使用

bash - 在其余命令行参数之前搜索一个命令行参数

python - 如何从 Fabric 中的终端命令行为多个主机提供 ssh key