Python中的虚拟网络接口

1 投票
1 回答
5460 浏览
提问于 2025-04-16 19:12

背景:

我需要设置一些爱普生的收据打印机。这些打印机的配置方法是通过浏览器访问 http://192.168.192.168/,然后提交一个表单。我写了一个Python脚本,可以模拟这个表单的提交,现在打印机可以在不使用网页界面的情况下进行配置。唯一的问题是,我的电脑必须连接到192.168.192.0/24这个网络。

问题:

有没有办法在Python中创建一个虚拟网络接口,让我的脚本可以使用,而不需要我手动去更改电脑的网络设置?

1 个回答

3

你遇到的问题是Python解决不了的。

听起来你的网络因为某种原因被分成了不同的部分。如果有一个防火墙或者一个连接了两个管理区域的主机,你可能可以利用端口地址转换,把这个服务器放在一个网络上,同时访问另一个网络。

如果192.168.192.0并不是出于管理或安全原因故意分开的,那可能是你的局域网管理员不小心了。在这种情况下,他们可以把192.168.192.0添加到公司的路由表中。

最后一个选择是通过某种VPN连接来连接这些管理区域……再次建议你和网络管理员讨论一下。

编辑

既然你需要在Linux中创建一个以太网别名,最简单的方法是使用iproute2工具……作为管理员使用ip addr add 192.168.192.1/24 dev eth0

[mpenning@Finger ~]$ sudo ip addr add 192.168.192.1/24 dev eth0
[mpenning@Finger ~]$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 78:2b:cb:0a:8c:f9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.12.238/24 brd 192.168.12.255 scope global eth0
    inet 192.168.192.1/24 scope global eth0
    inet6 fe80::7a2b:cbff:fe0a:8cf9/64 scope link 
       valid_lft forever preferred_lft forever
[mpenning@Finger ~]$ ip route show
192.168.192.0/24 dev eth0  proto kernel  scope link  src 192.168.192.1 
192.168.12.0/24 dev eth0  proto kernel  scope link  src 192.168.12.238 
default via 192.168.12.236 dev eth0 
[mpenning@Finger ~]$

现在把你的打印机插入以太网交换机……你应该能够ping通192.168.192.168……如果要删除这个别名,可以使用:ip addr del 192.168.192.1/24 dev eth0(作为管理员)。

撰写回答