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(cmd, stdout=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 |