[python] python ssh접속을 해보자.

Posted by Start Bootstrap on October 23, 2017

ubuntu,ssh,python


1. 왜.

  • 서비스의 운영상태를 살피기 위해 몇 서버에 접속을하여 해당 프로세스의 실행 여하를 확인할 필요가 있었다.


2. 그래서 무엇인가.

  • python에서 다른 서버로 ssh 접속하여 shell command를 날려보기 위해 paramiko를 이용해본다.


3. 써보자.


설치
pip3 install paramiko


코드
  • ssh에 필요한 정보를 입력한 뒤
  • 필요한 명령어를 순차적으로 실행시켜본다.
	// private key 위치를 입력한다.
	k = 	paramiko.RSAKey.from_private_key_file({privateKey_path})
	
	//클라이언트를 만든다.
	c = paramiko.SSHClient()
	
	// host key를 저장할 여부에 대한 세팅이다. 받아오려면 아래와같이 autoadd 옵션을 준다.
	
	// 디폴트는 받지 않는것으로 되어있다.
	c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
	
	// 정보를 알맞게 넣어준다
	c.connect( hostname = {hostname}, username = {user}, pkey = k )
	
	command01 = "ls"
	command02 = "pwd"
	// 접속후 실행할 명령어를 넣어준다.
	commands = [command01,command02]
	
	//루프를 통해 실행해나간다.
	for index,command in enumerate(commands):
	
		// stdin, stdout, stderr 상황에맞게나온다.
		stdin , stdout, stderr = c.exec_command(command)
		// 결과물을 아래와같이 출력한다.
		print(stdout.read())
	c.close()



4.마치며

  • ssh 접근 방법은 사실 파이썬라이브러리 뿐아니라 fabric, ansible과 같이 infra 관리툴등을 기능적으로 사용 할 수 도 있다고본다.
  • 언제나 그렇든 상황에 맞게 쓰는게 좋은것 같다.


Ref.