본문 바로가기
프로그래밍/파이썬

파이썬) paramiko를 이용해 서버에 ssh 붙고 명령 날리기

by laoching 2023. 10. 27.
728x90
반응형
paramiko

Welcome to Paramiko! — Paramiko documentation

 

Welcome to Paramiko! — Paramiko documentation

Welcome to Paramiko! Paramiko is a pure-Python (3.6+) implementation of the SSHv2 protocol , providing both client and server functionality. It provides the foundation for the high-level SSH library Fabric, which is what we recommend you use for common cli

www.paramiko.org

 

Paramiko is a pure-Python 1 (3.6+) implementation of the SSHv2 protocol

 

파라미코는 파이썬으로 구현한 SSHv2 protocol이다...

 

내가 만들고자 한 프로그램

서버에 ssh로 붙어서 명령어를 날려보고 싶었다.

 

파이썬으로 어떻게 해야하나 몰랐는데 paramiko라는게 있어서 이용해봤다.

 

중간에 missing_host_key_paramiko.SSHException: Unknown server x.x.x.x~~ 라는 에러가 나오는데, 해당 에러를 검색해보면 바로 해결이 가능하다.

 

 

서버에 처음 붙으면 Host Key를 받아오는데, 이게 무조건 있어야 접속이 된다고 한다.

서버에 ssh로 붙으면 yes/no 뭐 fingerprint 나오고 yes를 치고 들어가는 과정을 거치는데 해당 과정인듯..?

AutoAddPolicy() 옵션을 사용하여 host key를 자동생성함

import paramiko
import time

# 서버 리스트
servers = [
    #('115.143.0.1', 'username', 'password'),
    ('x.x.x.x', 'sangs', '1234')
]

# 명령어
command = "date"

for server in servers:
    # 연결 생성
    ssh = paramiko.SSHClient()
    # 원격 서버 호스트키 자동 생성(원격 서버의 키가 없어도 연결할 수 있도록)
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(server[0], username=server[1], password=server[2])

    # 명령어 실행
    stdin, stdout, stderr = ssh.exec_command(command)

    for line in stdout:
        print(f"{host}: {line}") # 서버 표준 출력 내용 출력

    # 연결 종료
    ssh.close()

 

서버에 진단 스크립트를 원격으로 실행해보았다.. 진단 결과도 가져올 수 있도록 만들어봐야겠다.

728x90
반응형

댓글