gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 10:27:58 28 4
gpt4 key购买 nike

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

我需要在服务器 b 的/etc/hosts 中添加来自 a 的主机条目。但是我登录到服务器 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

谢谢。

最佳答案

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 权限相同。

关于linux - 使用shell脚本修改/etc/hosts文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40940118/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com