首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash remote ssh更新附加替换

bash remote ssh更新附加替换
EN

Stack Overflow用户
提问于 2018-11-23 19:51:51
回答 1查看 227关注 0票数 2

我可以从位于本地LAN上的另一台Linux/Ubuntu机器成功地将ssh插入位于远程LAN上的远程Linux/Ubuntu机器中,并且我还可以使用我的新数据添加到远程计算机上的文件,例如:

代码语言:javascript
复制
RET_IP="111.111.111.111"
HOSTNAME=system host name
PORT="111"
DEST_FILE="/etc/hosts_2"
echo "$RET_IP     $HOSTNAME" | ssh -p  $PORT root@hostname "cat >> $DEST_FILE"

文件内容表示/etc/host文件。我不知道该做什么是如何替换IP主机名的行。hosts_2文件中可能有几个条目,甚至有些条目具有相同的IP地址,只是不同的主机名,我希望找到带有主机名“X”的行并替换它,或者如果主机名“X”不存在,我希望用新行添加/追加hosts_2文件。

我不知道这是否有可能。也许这是不可能的远程。我的搜索没有找到我需要的东西,尽管也许有些东西是关于sed的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-24 01:16:05

代码语言:javascript
复制
IP="111.111.111.111"
ssh_system_hostname="whatever"
new_hostname="system host name"
old_hostname="X"
port="111"
dest_file="/etc/hosts_2"
ssh -p $port root@$ssh_system_hostname -i "grep \"$IP     $old_hostname\" $dest_file
    && sed -ie \"s:$IP     $old_hostname:$IP     $new_hostname:g\" $dest_file
    || echo \"$IP     $new_hostname\" >> $dest_file"

让我知道这是否有效。我不太确定我的双引号是否正确。

说明:您可以正常使用ssh,然后检查该行是否存在于带有grep的文件中。如果成功,您可以用sed替代旧的东西,并将其替换为该文件中的新东西。如果grep失败(或者grep成功并且sed失败了),那么就用echo追加到文件中。

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

https://stackoverflow.com/questions/53452270

复制
相关文章

相似问题

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