Автоматизированное SNX-соединение в python скрипте - PullRequest
0 голосов
/ 02 мая 2020

Я много боролся, чтобы это исправить, но мне нужна помощь, потому что у меня такое чувство, что я достиг стены. Это продолжение этой страницы получение Checkpoint VPN SSL Network Extender, работающего в командной строке .

Я попытался включить соединение в сценарий python, используя pty .spawn python функция для подделки терминала для snx двоичного файла, но я не могу установить автоматическое c соединение, как я могу сделать в реальном терминале с помощью этой команды:

snx -s "my_server.com" -u "my_username" <<< my_password

Я написал небольшой сценарий python для иллюстрации:

#!/usr/bin/env python3

import pty
import sys
import os
from io import StringIO

password = False


def main():
    print("main begin")
    stdout = []
    stdin = []
    def master_read(fd):
        data = os.read(fd, 1024)
        stdout.append(data)
        return data

    def sdtin_read(fd):
        data = os.read(fd, 1024)
        stdin.append(data)
        return data

    try:
        print("before spawn ------")
        status = pty.spawn(['snx', '-s', 'my_server.com', '-u', 'my_username','<<<', '"my_password"'], master_read, sdtin_read)
        print("master_read ------")
        print( b";".join(stdout) )
        print("sdtin_read ------")
        print( b";".join(stdin) )

    except:
        e = sys.exc_info()[0]
        f = sys.exc_info()[1]
        print("result ------")
        print(e)
        print(f)
    print("main end")

if __name__ == "__main__":
    main()

"<<<" в сценарии не учитывается, и я не знаю, как это сделать. сделай это. Моей конечной целью является не жесткое кодирование пароля в скрипте, а создание красивого интерфейса для ввода пароля. </p>

Большое спасибо, если вы можете мне помочь в этом вопросе.

...