我可以从位于本地LAN上的另一台Linux/Ubuntu机器成功地将ssh插入位于远程LAN上的远程Linux/Ubuntu机器中,并且我还可以使用我的新数据添加到远程计算机上的文件,例如:
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的。
发布于 2018-11-24 01:16:05
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追加到文件中。
https://stackoverflow.com/questions/53452270
复制相似问题