Как вы выполняете несколько команд в одном сеансе в Paramiko? (Python)

def exec_command(self, command, bufsize=-1):
    #print "Executing Command: "+command
    chan = self._transport.open_session()
    chan.exec_command(command)
    stdin = chan.makefile('wb', bufsize)
    stdout = chan.makefile('rb', bufsize)
    stderr = chan.makefile_stderr('rb', bufsize)
    return stdin, stdout, stderr

При выполнении команды в paramiko она всегда сбрасывает сеанс при запуске exec_command. Я хочу иметь возможность выполнять sudo или su и при этом иметь эти привилегии при запуске другой команды exec_command. Другой пример - это попытка выполнить exec_command ("cd /"), а затем снова запустить exec_command и поместить ее в корневой каталог. Я знаю, что вы можете сделать что-то вроде exec_command ("cd /; ls -l"), но мне нужно делать это в отдельных вызовах функций.

41
задан Takkun 1 June 2011 в 15:25
поделиться

1 ответ

Можно выполнить весь файл сценария Bash для лучшего использования, вот код для этого:

import paramiko

hostname = "192.168.1.101"
username = "test"
password = "abc123"

# initialize the SSH client
client = paramiko.SSHClient()
# add to known hosts
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
    client.connect(hostname=hostname, username=username, password=password)
except:
    print("[!] Cannot connect to the SSH Server")
    exit()

# read the BASH script content from the file
bash_script = open("script.sh").read()
# execute the BASH script
stdin, stdout, stderr = client.exec_command(bash_script)
# read the standard output and print it
print(stdout.read().decode())
# print errors if there are any
err = stderr.read().decode()
if err:
    print(err)
# close the connection
client.close()

Это выполнит локальное script.sh файл на удаленном 192.168.1.101 машина Linux.

script.sh (просто пример):

cd Desktop
mkdir test_folder
cd test_folder
echo "$PATH" > path.txt

Это учебное руководство объясняет это подробно: , Как Выполнить Команды Bash в Удаленной Машине в Python .

0
ответ дан 27 November 2019 в 00:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: