python - 在 Linux 上使用 Python 更改 IP 设置

标签 python linux ubuntu network-programming

我需要提供一个Python程序,允许用户动态更改其设备的网络参数(IP、掩码、DNS和网关)。例如,将他的IP从192.168.1.10/24更改为192.168.1.15/24。我不想以 root 身份运行我的程序 - 但我可以授予我的用户一些特定权限(例如将用户添加到可以修改 /usr/network/interfaces 文件的组) .

我发现的是pynetlinux库,但它只提供 IP 和掩码修改,并且需要以 root 身份运行(或者可能是我误用了它)。

我可能可以通过解析 interfaces 文件并运行一些 bash/shell 命令来做到这一点,但我不想重新发明轮子。我很确定有些人已经遇到了我的问题并且做了一些很棒的事情。

我在 Ubuntu 12.04 上运行。我需要我的程序也能在 Ubuntu 14.04、CentOS 和 RedHat 上运行

最佳答案

您应该尝试创建程序必须执行的操作的完整列表。我发现在类似的设置中,为了响应用户交互,我们必须:

  • 修改配置文件(接口(interface)主机resolv.conf、...)
  • 回显到 sysfs 以更改某些设置
  • 启动/停止某些网络服务
  • 切换防火墙配置(我们也通过 init 脚本完成)

我们最终创建了一个具有明确定义接口(interface)的 Bash 脚本,某个非特权用户可以使用 sudo 从任何其他程序调用该脚本。

但是,我们基于对话框的前端已经用 Bash 编写,因此我们没有花太多时间寻找现有库,这在您的情况下肯定值得付出努力。

关于python - 在 Linux 上使用 Python 更改 IP 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29766601/

相关文章:

linux - 运行 nodejs 非 root

python - 如何使用 python 代码创建 Linux 可执行文件

python - PySpark - 稀疏向量列到矩阵

python - 在 matplotlib 中有条件地绘制连接线

c - MPI 程序挂起

linux - 所有 Linux 发行版中 "dir"命令的输出是否相同?

python - 如何正确建立别名?

python - 数据科学体验上的 AssertionError : Multiple . dist-info 目录

linux - 将字符串写入大量文件

java - 使用 Java process exec 通过 tee 命令将 telnet 输出通过管道传输到日志文件