是否可以使用 bash 中的 ssh 来“sudo su”?

是否可以使用 bash 中的 ssh 来“sudo su”?
#!/bin/bash
USERNAME=ksmith
HOSTS="linux1"
YUPDATE="sudo yum -y update"
FIXDATE="sudo -u echo -e 'ZONE="America/New_York"\nUTC=true' > /etc/sysconfig/clock"

for HOSTNAME in ${HOSTS} ; do
ssh -tt -l ${USERNAME} ${HOSTNAME} "${YUPDATE}; ${FIXDATE}"

done

我收到错误:

sudo -u echo -e 'ZONE="America/New_York"\nUTC=true' > /etc/sysconfig/clock
-bash: /etc/sysconfig/clock: Permission denied

我手动进入并尝试了 sudo,但不起作用。它需要先使用 sudo su,然后才能工作。但我无法在 bash 中运行它。我知道 Fab / Python 可以做到这一点,但我希望将其保留在 bash 中。

它将是一个脚本,用于更新我们所有的服务器,然后应用“FIXDATE”修复(需要 sudo su)。yum 更新工作正常。

答案1

您的问题是,sudo 仅在第一部分被接受,文件中的重定向不是以更高的权限完成的。

另外,您的“-u”有点令人困惑。您是不是漏掉了用户?我不知道“和'”是否使用得当,您可能需要尝试一下。

这可能对你有用:

sudo bash -c 'echo -e "Zone=\"America/New_York\"\nUTC=true" > /etc/sysconfig/clock'

另一种方法可能是编写一个单独的脚本并使用 sudo 调用它,这样脚本中的所有指令都用 sudo 调用。

相关内容