#!/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"]))