首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用shell脚本修改/etc/hosts文件

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

Stack Overflow用户
提问于 2016-12-03 04:10:38
回答 1查看 2.8K关注 0票数 0

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

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

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

以下是尝试过的脚本:

代码语言:javascript
复制
#!/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"

输出:

代码语言:javascript
复制
bash test.sh
Warning: Permanently added '10.8.150.28' (RSA) to the list of known hosts.
bash: /etc/hosts: Permission denied

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-12-03 06:45:09

直接sudo doesn't work with redirects,因此您可以使用sudo tee -a将其追加到文件:

代码语言:javascript
复制
echo '1.2.3.4 test' | sudo tee -a /etc/hosts

在您的命令中,这将是:

代码语言:javascript
复制
sshpass -e ssh -o UserKnownHostsFile=/dev/null -o 'StrictHostKeyChecking no' "$SSHUSER@$WPC_IP" "echo test | sudo tee -a /etc/hosts"

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40940118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档