[PYTHON] ssh를 사용하여 파이썬에서 원격으로 스크립트를 실행하는 방법?
PYTHONssh를 사용하여 파이썬에서 원격으로 스크립트를 실행하는 방법?
def execute(self,command):
to_exec = self.transport.open_session()
to_exec.exec_command(command)
print 'Command executed'
connection.execute("install.sh")
원격 시스템을 검사 할 때 스크립트가 실행되지 않는 것을 발견했습니다. 어떤 단서?
해결법
-
==============================
1.아래 코드는 원하는대로 할 것이고 execute 함수에 적용 할 수 있습니다.
아래 코드는 원하는대로 할 것이고 execute 함수에 적용 할 수 있습니다.
from paramiko import SSHClient host="hostname" user="username" client = SSHClient() client.load_system_host_keys() client.connect(host, username=user) stdin, stdout, stderr = client.exec_command('./install.sh') print "stderr: ", stderr.readlines() print "pwd: ", stdout.readlines()
하지만 명령은 $ HOME 디렉토리로 기본 설정됩니다. 따라서 $ PATH에 install.sh가 있어야하거나 install.sh 스크립트가 들어있는 디렉토리로 이동해야합니다 (대부분). .
다음을 사용하여 기본 경로를 확인할 수 있습니다.
stdin, stdout, stderr = client.exec_command('getconf PATH') print "PATH: ", stdout.readlines()
그러나 경로에 없다면 다음과 같이 스크립트를 실행하고 실행할 수 있습니다.
stdin, stdout, stderr = client.exec_command('(cd /path/to/files; ./install.sh)') print "stderr: ", stderr.readlines() print "pwd: ", stdout.readlines()
스크립트가 $ PATH에 없으면 명령 줄에 있던 것처럼 install.sh 대신 ./install.sh를 사용해야합니다.
위의 모든 사항을 수행 한 후에도 여전히 문제가 발생하면 install.sh 파일의 사용 권한도 확인하는 것이 좋습니다.
stdin, stdout, stderr = client.exec_command('ls -la install.sh') print "permissions: ", stdout.readlines()
-
==============================
2.
ssh = paramiko.client.SSHClient() ssh.set_missing_host_key_policy(paramiko.client.AutoAddPolicy()) ssh.connect(hostname=host, username=username, password = password) chan = ssh.invoke_shell() def run_cmd(cmd): print('='*30) print('[CMD]', cmd) chan.send(cmd + '\n') time.sleep(2) buff = '' while chan.recv_ready(): print('Reading buffer') resp = chan.recv(9999) buff = resp.decode() print(resp.decode()) if 'password' in buff: time.sleep(1) chan.send(password + '\n') time.sleep(2) print('Command was successful: ' + cmd)
-
==============================
3.
subprocess.Popen('ssh thehost install.sh')
하위 프로세스 모듈을 참조하십시오.
from https://stackoverflow.com/questions/8783009/how-to-execute-a-script-remotely-in-python-using-ssh by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 사람이 읽을 수있는 메시지 ID 목록 [닫은] (0) | 2018.11.05 |
---|---|
[PYTHON] Tensorflow Slim : TypeError : 예상되는 int32, 대신 '_Message'유형의 Tensors가있는 목록이 있습니다. (0) | 2018.11.05 |
[PYTHON] Google 스프레드 시트를 Python으로 액세스 (읽기, 쓰기)하려면 어떻게합니까? (0) | 2018.11.05 |
[PYTHON] Python - GroupBy 객체 롤링 함수 (0) | 2018.11.05 |
[PYTHON] 스핑크스에서 autodoc으로 생성 된 함수를 어떻게 상호 참조합니까? (0) | 2018.11.05 |