如果VPN断开连接,则停止整个流量-禁用网络(Shell脚本)

如果VPN断开连接,则停止整个流量-禁用网络(Shell脚本),shell,connection,vpn,Shell,Connection,Vpn,各位好,, 我需要一个Shell脚本来检查VPN连接是否被更改。如果它被更改(vpn断开连接),网络将被禁用,并且没有数据可以输出。因此不会出现IP泄漏。我已经检查了很多网站,发现了一个有趣的python脚本。这是: #!/usr/bin/env python # # licensed under GNU General Public License version 2 # import sys import traceback import gobject import dbus im

各位好,, 我需要一个Shell脚本来检查VPN连接是否被更改。如果它被更改(vpn断开连接),网络将被禁用,并且没有数据可以输出。因此不会出现IP泄漏。我已经检查了很多网站,发现了一个有趣的python脚本。这是:

#!/usr/bin/env python

#
# licensed under GNU General Public License version 2
#

import sys
import traceback

import gobject

import dbus
import dbus.decorators
import dbus.mainloop.glib

import os

def catchall_signal_handler(*args, **kwargs):
    print ("Caught signal: "+ kwargs['member'])
    if args[0] >= 6: #vpn disconnect (6) or failure (7)
        print ("Killing internet connection...")
    #set eth0 to your network adapter
        os.system('ifconfig eth0 down')
    #if you are using python 3 no raw_input() exists so use input()
    raw_input("Press Enter to enable your network adapter...")
    #set eth0 to your network adapter
    os.system('ifconfig eth0 up')
     print ("Your network adapter has been enabled.")   

if __name__ == '__main__':
    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
    print ("Monitoring your VPN connection...")
    bus = dbus.SystemBus()

    #lets make a catchall
    bus.add_signal_receiver(catchall_signal_handler, signal_name='VpnStateChanged', interface_keyword='dbus_interface', member_keyword='member')

    loop = gobject.MainLoop()
    loop.run()
问题是,它似乎只工作了一次。真奇怪。 所以,我问你,作为一名专家,问题可能在哪里。如果有人也会有另一个脚本,这是更优化,我会非常感谢

提前谢谢


亲切的问候,

当你说它只起作用一次时,你是指每次治疗一次还是一次又一次?此脚本运行后适配器的状态是什么(当您按enter键时它是否会恢复)?您好,它工作了一次,再也没有工作过。我尝试重新启动并再次执行,但没有成功。当我在运行它后按enter键时,它会打印适配器已启用。。。我尝试使用“sudo ifconfig eth0 up”手动启用适配器,然后再次尝试该脚本,但如果断开VPN连接,脚本会说它已停止通信,但网络仍在工作。。真的很奇怪。。