Es wird verwendet, wenn die Verarbeitung definiert wird, die nur mit dem Python-Block "with" ausgeführt werden soll.
Beispiel:
with
no block
f = open('hoge.txt', 'w')
f.write('hoge\n')
f.close()
Es gibt einen "mit" Block
with open('hoge.txt', 'w') as f:
f.write('hoge\n')
Stellen Sie mit dem paramiko-Paket nur innerhalb des with
-Blocks eine Verbindung zum Server her
import os
from contextlib import contextmanager
import paramiko
def connect_ssh(host, username=None, password=None):
return _connect_ssh_context(host, username, password)
@contextmanager
def _connect_ssh_context(host, username, password):
try:
#Vorverarbeitung
ssh = paramiko.SSHClient()
ssh.load_host_keys(os.path.expanduser('~/.ssh/known_hosts'))
ssh.connect(host, username=username, password=password)
yield ssh #Variablen, die Sie als erhalten möchten
finally:
#Nachbearbeitung
ssh.close()
with connect_ssh('server', 'username') as f:
_, stdout, stderr = f.exec_command('ls')
print(stdout.read())
Recommended Posts