usr bin env python coding utf-8 import subprocess import os import tim

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import subprocess
import os
import time
import socket
DEVNULL = open(os.devnull, 'wb')
# Список с хостами.
# На port будет биндится socks. Нужно выделять порты выше тысячного и предусмотреть, чтобы
# не было конфликтов с системными службами и параллельными чекерами.
hosts = [
{ "host" : "66.188.237.62", "user" : "pi", "password" : "pi", "port" : "1001" },
{ "host" : "70.88.104.102", "user" : "admin", "password" : "admin", "port" : "1002" },
{ "host" : "66.147.82.154", "user" : "scan", "password" : "scan", "port" : "1003" },
{ "host" : "72.221.102.31", "user" : "admin", "password" : "admin", "port" : "1004" },
{ "host" : "24.153.150.78", "user" : "PlcmSpIp", "password" : "PlcmSpIp123", "port" : "1005" }
]
def check (h):
sshcmd = [
"sshpass", # Позволяет передавать пароль аргументом. Нужно предварительно установить
"-p", h["password"], # пароль от хоста
"ssh",
"-D", h["port"], # Порт на который забиндится сокс
"-N", # не спавнить шелл на удаленном хосте
"-o", "UserKnownHostsFile=/dev/null", # не читать файл ~/.ssh/known_hosts
"-o", "StrictHostKeyChecking=no", # не запрашивать проверку фингерпринта ключа
"-o", "ConnectTimeout=5", # таймаут в секундах сколько ssh будет ждать подключения
"-o", "PreferredAuthentications=password", # только по паролю
"-o", "PubkeyAuthentication=no", # не пытаться авторизоваться с помощью ключа
h["user"]+"@"+h["host"]
]
proc = subprocess.Popen(sshcmd,stdout=DEVNULL,stderr=DEVNULL,close_fds=True)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
result = s.connect_ex(('127.0.0.1', int(h["port"]))