setip
你好,我必须编写一个可以像这样运行的脚本:
./setip <ip> <mask>
并且必须在接口上将IP 地址设置为<ip>
并将掩码设置为。以下是我的脚本的内容,但是当我尝试运行它时,我收到错误“权限被拒绝”。我的脚本有什么问题,我该如何处理?<mask>
lo1
#! /bin/bash
sudo echo
"
auto lo:1
iface lo:1 inet static
address $1
netmask $2" >/etc/network/interfaces
答案1
sudo echo "
auto lo:1
iface lo:1 inet static
address $1
netmask $2" | sudo tee /etc/network/interfaces
脚本的最后一行netmask $2" >/etc/network/interfaces
尝试编辑只有 root 可以写入的接口文件。(或者至少它应该由 root 拥有)
但是,sudo echo "" >
它可能不会按您希望的方式工作。
它正在echo ""
使用 root 权限执行,但>
操作员并未使用这些权限执行。
您可能需要重新格式化您的命令此示例的。在这种情况下,输出到文件的命令是以 root 身份运行的,而其他命令则不必如此。我在上面已经向您展示了一个示例。
答案2
我认为它并没有像sudo
你想象的那样工作。实际上,它sudo
只会影响echo
命令 - 它实际上不会将你需要的内容输出到/etc/network/interfaces/
文件中,因为sudo
实际上并没有覆盖>
。
那么你能做什么呢?你有两个选择:
- 重新格式化您的命令,使其像 robobenklein 在其答案中提供的链接中提供的命令一样工作。
- 运行整个脚本,
sudo
以超级用户身份有效地运行整个命令,并且重定向可能会起作用。
答案3
您需要运行chmod +x setip
以允许您的脚本可执行。有关文件权限的更多信息,请参见这里。