import time
import paramiko, time
import socks
from getpass import getpass
def juniper_parse(ip_a, u_id, u_pas,find_words):
try:
#socks config
sock=socks.socksocket()
sock.set_proxy(
proxy_type=socks.SOCKS5,
addr="Socks Server IP",
port=Socks Server Port,
username="Socks Server ID",
password="Socks Server Password")
#sock ssh connect
sock.connect((ip_a,22))
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip_a, username=u_id, password=u_pas, sock=sock)
print("Connected Complete")
#interactive shell 선언
connection = ssh.invoke_shell()
time.sleep(3)
connection.send("set cli screen-length 0\n")
time.sleep(1)
connection.send("show interface ter\n")
time.sleep(1)
data = connection.recv(65535)
data = (data.decode())
ssh.close()
with open("juniper_rawdata.txt", 'a', newline="") as f:
f.write(str(data))
with open ("juniper_rawdata.txt") as f,open ("juniper_data.txt","w") as save_file:
for line in f:
if any (x in line for x in find_words):
save_file.write(line)
except Exception as ex:
print("연결오류",ex)
with open ("연결 대상 장비 리스트.txt") as f:
content=f.read().splitlines()
u_id = input("Enter your Username:")
if not u_id:
u_id = "admin"
print(f"if you No Username input please Enter to keep goning default ID {u_id}")
u_pas= getpass(f"Enter Password of the user {u_id}: ")or "admin"
find_words = ["down",u_id]
for device in content:
print(device)
juniper_parse(device, u_id, u_pas,find_words)
해당 코드는 Socks Proxy를 사용는 네트워크 장비에 접속하기 위한 자동화 코드 1차로 RAW Data에 커맨드 결과물을
저장 후 find_word에 적혀있는 단어가 있는 line 추출하여 엑셀에 저장하는 코드
해당 코드 실행시 텍스트파일에 있는 IP 정보를 불러와 ID 와 Password를 입력 받은 후 주니퍼 장비에 접속하여 show interface ter 명령어 실행 후 다운된 인터페이스 만을 추려 엑셀파일로 저장
'파이썬 코드' 카테고리의 다른 글
networkautomation -3- (0) | 2023.02.23 |
---|---|
텍스트 파일에서 주니퍼 장비 정보 파싱하기 (0) | 2023.02.22 |
Network automation (0) | 2023.02.14 |
파이썬을 이용한 NMAP 사용 (0) | 2023.02.12 |
파이썬 무작위 대입공격 도구 (0) | 2023.02.12 |