我需要一个通过ssh连接到我的服务器(openstack)的python脚本,然后有一个bash文件demo-openrc.sh(此bash脚本需要首先执行,然后我将运行以下命令,例如openstack服务器列表(它将返回我所有实例的列表)),但问题是bash脚本包含环境变量,并且openstack项目有1个用户输入,我该如何在python中从用户那里获取此bash环境变量输入
from _multiprocessing import send
import paramiko
import cmd
import time
import sys
import os
import subprocess
from subprocess import Popen,PIPE
from paramiko import SSHClient
host="172.17.85.250"
user="stack"
passs="salman"
client = SSHClient()
client.load_system_host_keys()
client.connect(hostname=host, username=user , password=passs)
stdin, stdout, stderr = client.exec_command('./demo-openrc.sh')
print ("stderr: ", stderr.readlines())
print ("pwd: ", stdout.readlines())
答案 0 :(得分:0)
好,知道了。您必须使用模块subprocess
并使用通信功能将用户输入传递给相应的功能。 subprocess.communicate
会将用户输入发送到由子流程自身创建的子流程。检查下面的代码。代码的这种安全性是将输入“ Ajay”传递给test.sh脚本。这是一种逻辑,是尝试向您展示如何完成工作。
在您的情况下,在确实提供bash脚本的远程计算机上创建python脚本,然后从python脚本中将输入传递给bash脚本
/ bin / bash
阅读-p“输入您的姓名:”用户名
回显“欢迎使用$用户名!”
导入子进程
process = subprocess.Popen(['bash','test.sh'],stdin = subprocess.PIPE, stdout = subprocess.PIPE)
输出,错误= process.communicate(b'Ajay')
打印(输出)
输出
b'Welcome Ajay!\ n'