Мне нужно написать скрипт Python, который мог бы сказать мне «Если я подключен к VPN или нет», используя его в качестве Test_Case: - PullRequest
0 голосов
/ 18 марта 2019

Сейчас я пытаюсь написать скрипт на python, который может дать двоичный результат, чтобы проверить, подключен ли мой компьютер к Corporate_VPN (Connection_Name) ИЛИ Не подключен к Corporate_VPN.

Я перепробовал несколько статей и постов, которые смог найти, но безуспешно. Вот некоторые из них:

Я пробовал этот пост: Получение подключенного VPN-имени в Python

И пробовал:

import NetworkManager
for conn in NetworkManager.NetworkManager.ActiveConnections:
    print('Name: %s; vpn?: %s' % (conn.Id, conn.Vpn))

Я получаю эту ошибку:

    ImportError                               
    Traceback (most recent call last)
    <ipython-input-6-52b1e422fff2> in <module>()
    ----> 1 import NetworkManager
          2 
          3 for conn in NetworkManager.NetworkManager.ActiveConnections:
          4     print('Name: %s; vpn?: %s' % (conn.Id, conn.Vpn))

    ImportError: No module named 'NetworkManager'

При попытке «установить pip-пакет python-NetworManager» я получил эту ошибку:

Failed building wheel for dbus-python
  Running setup.py clean for dbus-python
Successfully built python-networkmanager
Failed to build dbus-python
Installing collected packages: dbus-python, python-networkmanager
  Running setup.py install for dbus-python ... error
    Complete output from command C:\Anaconda3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\samola\\AppData\\Local\\Temp\\1\\pip-install-p1feeotm\\dbus-python\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\samola\AppData\Local\Temp\1\pip-record-91dmsyv1\install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    creating C:\Users\samola\AppData\Local\Temp\1\pip-install-p1feeotm\dbus-python\build
    creating C:\Users\samola\AppData\Local\Temp\1\pip-install-p1feeotm\dbus-python\build\temp.win-amd64-3.6
    error: [WinError 193] %1 is not a valid Win32 application

    ----------------------------------------
Command "C:\Anaconda3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\samola\\AppData\\Local\\Temp\\1\\pip-install-p1feeotm\\dbus-python\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\samola\AppData\Local\Temp\1\pip-record-91dmsyv1\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\samola\AppData\Local\Temp\1\pip-install-p1feeotm\dbus-python\

Позже, когда я попытался "pip install dbus-python", я получил эту ошибку:

  Failed building wheel for dbus-python
  Running setup.py clean for dbus-python
Failed to build dbus-python
Installing collected packages: dbus-python
  Running setup.py install for dbus-python ... error
    Complete output from command C:\Anaconda3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\samola\\AppData\\Local\\Temp\\1\\pip-install-lp5w3k60\\dbus-python\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\samola\AppData\Local\Temp\1\pip-record-7mvtqy_d\install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    creating C:\Users\samola\AppData\Local\Temp\1\pip-install-lp5w3k60\dbus-python\build
    creating C:\Users\samola\AppData\Local\Temp\1\pip-install-lp5w3k60\dbus-python\build\temp.win-amd64-3.6
    error: [WinError 193] %1 is not a valid Win32 application

    ----------------------------------------
Command "C:\Anaconda3\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users\\samola\\AppData\\Local\\Temp\\1\\pip-install-lp5w3k60\\dbus-python\\setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\samola\AppData\Local\Temp\1\pip-record-7mvtqy_d\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\samola\AppData\Local\Temp\1\pip-install-lp5w3k60\dbus-python\

Я также пытался следовать POST без посторонней помощи: https://www.reddit.com/r/learnpython/comments/5qkpu1/python_script_to_check_if_connected_to_vpn_or_not/

host = *******
ping = subprocess.Popen(["ping.exe","-n","1","-w","1",host],stdout = subprocess.PIPE).communicate()[0]
if ('unreachable' in str(ping)) or ('timed' in str(ping)) or ('failure' in str(ping)):
    ping_chk = 0
else:
    ping_chk = 1 

 if ping_chk == 1:
     print ("VPN Connected")
 else:
    print ("VPN Not Connected")

выкидываете ошибку:

File "<ipython-input-5-6f992511172f>", line 1
    host = 192.168.*.*
                   ^
SyntaxError: invalid syntax

Я не уверен, что я сейчас делаю неправильно. Примечание: я делаю все это в корпоративном VPN-соединении.

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Вот код, который сообщает, подключены ли вы к VPN или нет.

Примечание: IPv4-адрес компьютера в VPN может меняться при каждом подключении к VPN.

import subprocess
host = '**.***.***.***' 
#IPv4 should be string ''
#IPv4 Address (while connected to VPN in command prompt type: ipconfig",
copy IPv4 Address digits and paste as "host = ", 
#IPv4 Address. changes each time we freshly connect to VPN. )
ping = subprocess.Popen(["ping.exe","-n","1","-w","1",host],stdout = subprocess.PIPE).communicate()[0]
if ('unreachable' in str(ping)) or ('timed' in str(ping)) or ('failure' in str(ping)):
    ping_chk = 0
else:
    ping_chk = 1 

if ping_chk == 1:
     print ("VPN Connected")
else:
    print ("VPN Not Connected")
0 голосов
/ 18 марта 2019
pip install python-NetworManager

ошибка: [WinError 193]% 1 не является допустимым приложением Win32

NetworManager является приложением только для Linux .

    host = 192.168.*.*
                   ^
SyntaxError: invalid syntax

IP-адрес должен быть строкой:

    host = '192.168.*.*'
...