使用shell脚本修改/ etc / hosts文件

时间:2016-12-02 20:10:38

标签: linux bash shell centos6 sshpass

我的两台服务器a和b之间没有启用无密码ssh。所以我使用sshpass从a。连接到服务器b。

我需要在服务器b的/ etc / hosts中添加主机条目。但是我登录到服务器b的用户是非root用户,但具有sudo权限来编辑root拥有的文件。

如何在使用sshpass时通过shell脚本从服务器a向服务器b的/ etc / hosts添加主机条目。

以下是尝试过的脚本:

#!/bin/bash

export SSHPASS="password"
SSHUSER=ciuser
WPC_IP=10.8.150.28

sshpass -e ssh -o UserKnownHostsFile=/dev/null -o 'StrictHostKeyChecking no' $SSHUSER@$WPC_IP "echo test >> /etc/hosts"

输出:

bash test.sh
Warning: Permanently added '10.8.150.28' (RSA) to the list of known hosts.
bash: /etc/hosts: Permission denied

谢谢。

1 个答案:

答案 0 :(得分:1)

直接

sudo doesn't work with redirects,因此您可以使用sudo tee -a附加到文件中:

echo '1.2.3.4 test' | sudo tee -a /etc/hosts

在你的命令中,这将是:

sshpass -e ssh -o UserKnownHostsFile=/dev/null -o 'StrictHostKeyChecking no' "$SSHUSER@$WPC_IP" "echo test | sudo tee -a /etc/hosts"

请注意,这需要没有tty的无密码sudo访问权限,这不一定与您的sudo权限相同。