import time
import paramiko, time
import socks
from getpass import getpass
def juniper_parse(ip_a, u_id, u_pas, command):
#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(("SSH 연결 IP",22))
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect("1차 연결 IP", username=u_id, password=u_pas, sock=sock)
#interactive shell 선언
connection = ssh.invoke_shell()
print("core 연결 완료")
for ip in ip_a:
time.sleep(0.5)
connection.send(f"ssh {ip}\n")
time.sleep(2)
connection.send(f"{u_pas}\n")
time.sleep(1)
print(f"{ip} connectecd complete ")
time.sleep(1)
for cmd in command:
time.sleep(0.5)
connection.send(cmd)
time.sleep(0.5)
print(f"{ip} Send command complete ")
data = connection.recv(65535)
data = (data.decode())
with open("juniper_data.txt", 'a',newline="") as f:
f.write(str(data))
ssh.close()
with open ("2차 연결 대상장비 리스트.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"
command = ("show system alarm\n", "show chassis alarm\n", "exit\n")
juniper_parse(content, u_id, u_pas, command)
이 코드는 장비에 바로 SSH 연결이 되는 것이 아니라 특정 장비에 SSH 접속 후 텍스트 파일에 있는 IP 정보를 불러와 SSH 연결을 한번더 실행 후 대상장비로 연결 후 커맨드를 전송하는 경우 사용 되는 코드
'파이썬 코드' 카테고리의 다른 글
텍스트 파일에서 주니퍼 장비 정보 파싱하기 (0) | 2023.02.22 |
---|---|
Network automation -2- (0) | 2023.02.14 |
파이썬을 이용한 NMAP 사용 (0) | 2023.02.12 |
파이썬 무작위 대입공격 도구 (0) | 2023.02.12 |
모의해킹 (0) | 2021.03.17 |