python

python ping + telnet test

MasterOfAI 2020. 12. 28. 12:44

Goal:

1. 내 PC는 DHCP Server 이고, IP address 는 169.254.0.100 임

2. 내 PC에 DHCP Client 형태로 169.254.0.1 ~ 99 까지의 client PC들이 연결 될수 있음

3. 현재 어떤 것이 연결되었는지 , 어떤 것이 안되었는지는 알수 없는 상황

4. Server PC의 운영체제는 Windows 7 이고 client PC들은 운영체제가 Linux 임

5. 이 경우 연결된 모든 client 들을 찾아서 , login 한 후 "reboot" 이라는 linux command 를 날려 client 들을 재 부팅 시키는 python code 를 만들어라. 

 

Source Code:

 

import telnetlib

import subprocess

 

# ping test 를 통해 붙어 있는 blade 들을 찾음

remote_list = []

for i in range(1,99):

    ip = '169.254.0.'+str(i)

    cmd = ['ping','-n','1',ip]

    fd_open = subprocess.Popen(cmdstdout=subprocess.PIPE).stdout

    data = fd_open.read().strip()

    fd_open.close()

    if data.decode('utf-8').find("unreachable") != -1:

        print(ip + " is unreachable")

        break

    else:

        remote_list.append(ip)

 

# telnet 접속 및 reboot 실행 

for host in remote_list:

    tn = telnetlib.Telnet(host)

    # login string 은 장비 마다 다르니 변경 필요

    response = tn.read_until(b"XXXX login: ")

    # login name 역시 변경 필요

    tn.write(b"root\n")

    tn.read_until(b"Password: ")

    # password 역시 장비마다 다르니 변경 필요

    tn.write(b"XXXXX\n")

    tn.write(b"reboot\n")

    tn.write(b"exit\n")

    print(host)

    print(tn.read_all().decode('ascii'))

'python' 카테고리의 다른 글

raise  (0) 2021.01.12
python netstat + telnet test  (0) 2020.12.28
Python Number  (0) 2020.12.15
Python Data Type  (0) 2020.12.14
왜 python 인가?  (0) 2020.11.26