#!/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 调用。