티스토리 뷰
얼마 전부터 매일 서버점검 해야 하는 일이 생겼다. 운영중인 5개의 서버에 일일히 접속하여 각 서버에 여러 번 명령어를 실행 후 그 결과를 확인해야 하는 작업이다. 넘나 귀찮은 나머지 처음엔 bash shell script를 만들어서 쉘파일을 실행했다. 근데 그것도 서버가 5개이니, 각 서버에 파일을 만들어놓고 다섯 번을 접속해서 다섯 번 파일을 실행해야 했다. 오 넘나 귀찮은 것... 결국엔 파이썬으로 5개의 서버 정보를 불러와서 접속 후, 각 서버에 해당하는 명령어를 실행하여 그 결과를 이미지로 찍어내는 프로그램을 만들었다. 점검을 나만 하는 게 아니어서, pyinstaller 이용해서 만든 파이썬 프로그램을 exe로 뽑아내 배포하니까 같이 일하는 분들이 좋아하신다. 역시 파이썬이 최고.
아래는 ssh접속 후 명령어를 실행하는 간단 예제다.
1. paramiko 설치
python -m pip install paramiko
2. 소스단
import paramiko
def readTxtFile(fileNm):
file = open(fileNm+".txt", "r", encoding="UTF-8")
data = []
while (1):
line = file.readline()
try:
escape = line.index('\n')
except:
escape = len(line)
if line:
data.append(line[0:escape])
else:
break
file.close()
return data
def execCommands():
cli = paramiko.SSHClient()
cli.set_missing_host_key_policy(paramiko.AutoAddPolicy)
cli.connect("아이피", port=포트, username="아이디", password="패스워드")
commandLines = readTxtFile("./commands/" + "파일명") # 메모장 파일에 적어놨던 명령어 텍스트 읽어옴
print(commandLines)
stdin, stdout, stderr = cli.exec_command(";".join(commandLines)) # 명령어 실행
lines = stdout.readlines() # 실행한 명령어에 대한 결과 텍스트
resultData = ''.join(lines)
print(resultData) # 결과 확인
'공장 (factory) > - Programming..' 카테고리의 다른 글
[Java] Reflection을 활용한 메서드, 필드 값 불러오기. (0) | 2021.01.22 |
---|---|
[Python] PIL(Python Image Library) 이미지에 텍스트 넣기. (0) | 2020.04.09 |
[Python] pyodbc를 이용한 MSSQL DB조회 (1) | 2020.04.09 |
[javascript/jQuery] javascript와 jQuery 비교 정리. (0) | 2020.01.09 |
[javascript/jQuery/bootstrap4] 메시지Modal 커스텀. (0) | 2020.01.09 |
댓글