更新主机文件的脚本

更新主机文件的脚本

我有以下命令可以正确创建我想要构建的 /etc/hosts 文件。但是,由于权限问题,我无法按照第二种形式写入它。因此,我尝试了第三种形式的变体,但仍然出现权限错误。有人可以给我一个尝试的建议吗?

cat hosts.tmp ; echo -n "myremotehost " ; cat ip.txt

cat hosts.tmp ; echo -n "myremotehost " ; cat ip.txt > /etc/hosts

cat hosts.tmp ; echo -n "myremotehost " ; echo mypassword | sudo -S cat ip.txt > /etc/hosts

答案1

这对我来说很难发现!(我是 Linux 的新手。)

在终端中输入sudo -i,然后使用您的用户密码登录。您将进入根目录,拥有上帝般的力量……:>)

我还发现bash filename.sh会启动脚本。请原谅我,我编写了一个脚本(根据另一篇文章中的建议),它消除了 Youtube 上的所有广告,这让我感到非常有成就感!

答案2

我会把修改文件的指令/etc/hosts放在一个 shell 脚本中,比如说modify-hosts.sh,然后执行

sudo modify-hosts.sh

如果您坚持在不提供密码的情况下运行脚本,请将NOPASSWD专门针对该脚本的条目和您的用户名添加到/etc/sudoers

至于文件的内容,您可以执行以下操作:

cp hosts.tmp > /etc/hosts
echo "myremotehost $(cat /path/to/ip.txt)" >> /etc/hosts

更方便的是,如果myhostname已经有条目,/etc/hosts您可以就地编辑它:

sed -i -e 's/myhostname .*/myhostname '$(cat ip.txt)'/' /etc/hosts

你甚至可以sudo在一行中声明这一点

sudo sed -i -e 's/myhostname .*/myhostname '$(cat ip.txt)'/' /etc/hosts

而不会遇到重定向问题。

相关内容