Pular para o conteúdo

Usar comandos shell script dentro do Python [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Usar comandos shell script dentro do Python [RESOLVIDO]

Enviado em 01/08/2017 - 02:32h

Olá pessoal,

Estou automatizando tarefas e sou novo em python, por isso gostaria da ajuda de vocês, pois preciso rodar um shell script em uma outra máquina e este comando eu preciso dar dentro de um código Python. Pensei em usar algo como:

###########################################################################
#!/usr/bin/python
# -*- coding: utf8 -*-
import subprocess

subprocess.call('ssh <user>@<host>', shell=True)
###########################################################################
Mas fica por isso mesmo pois não sei como inputaria o login e a senha (assim como o "yes" da criptografia). Agradeço a todos pela ajuda, desde já.

Um abraço.

Paulo.

Responder tópico

2. Re: Usar comandos shell script dentro do Python [RESOLVIDO]

Enviado em 09/08/2017 - 11:46h

Você pode usar o Paramiko para isso.
Exemplo:

import paramiko

ssh = paramiko.SSHClient()

# O "Yes da Criptografia" que pediu.
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# Conexão
ssh.connect('127.0.0.1', username='root', password='senha')

# Executar Comando
stdin, stdout, stderr = ssh.exec_command('echo oi\n')

# Imprimir Resposta
print(stdout.readlines())


Para mais informações, deixo aqui a documentação: http://docs.paramiko.org/en/2.2/
__________________________________________
Kernel: 4.12.4 (x86_64 LowLatency)
CPU: i5-2410M 2.9GHz RAM: 7811MiB

3. Re: Usar comandos shell script dentro do Python [RESOLVIDO]

Enviado em 09/08/2017 - 11:47h

Você pode usar o Paramiko para isso.
Exemplo:

import paramiko

ssh = paramiko.SSHClient()

# O "Yes da Criptografia" que pediu.
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# Conexão
ssh.connect('127.0.0.1', username='root', password='senha')

# Executar Comando
stdin, stdout, stderr = ssh.exec_command('echo oi\n')

# Imprimir Resposta
print(stdout.readlines())


Para mais informações, deixo aqui a documentação: http://docs.paramiko.org/en/2.2/
__________________________________________
Kernel: 4.12.4 (x86_64 LowLatency)
CPU: i5-2410M 2.9GHz RAM: 7811MiB

4. Re: Usar comandos shell script dentro do Python

Enviado em 09/08/2017 - 11:49h

Você pode usar o Paramiko para isso.
Exemplo:

import paramiko

ssh = paramiko.SSHClient()

# O "Yes da Criptografia" que pediu.
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# Conexão
ssh.connect('127.0.0.1', username='root', password='senha')

# Executar Comando
stdin, stdout, stderr = ssh.exec_command('echo oi\n')

# Imprimir Resposta
print(stdout.readlines())


Para mais informações, deixo aqui a documentação: http://docs.paramiko.org/en/2.2/
__________________________________________
Kernel: 4.12.4 (x86_64 LowLatency)
CPU: i5-2410M 2.9GHz RAM: 7811MiB

5. Re: Usar comandos shell script dentro do Python [RESOLVIDO]

Enviado em 09/08/2017 - 13:42h

Tente com o método call do módulo subprocess:
#!/usr/bin/env python3

from getpass import getpass
from subprocess import call

script = """for ((x=0; x<10;x++)); do
echo $x;
done;"""

commands = "ssh 127.0.0.1 -C {}".format(script)
call(commands.split())



Isso abre uma sessão ssh para 127.0.0.1 e executa os comandos depois fecha a conexão ssh e volta a executar o resto do script python (se ainda existir). Para não ter que ficar digitando senha eu sugiro que crie uma chave de autenticação, que além de mais seguro, te permita uma flexibilidade maior de gerenciamento precisando somente do comando:
ssh [user]@host -C [comando(s)] 



Espero ter ajudado!
______________________________________________________________________
OS: Biebian
Kernel: x86_64 3.5.2-amd64
Resolution: 1320x768
CPU: Intel Core i3-4005U CPU @ 1.7GHz
RAM: 3852MiB
Distro: http://biebian.sourceforge.net/

6. Re: Usar comandos shell script dentro do Python [RESOLVIDO]

Enviado em 09/08/2017 - 13:58h

Acompanhando esse tópico.

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder