首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python进入jumpserver,然后从jumpserver进入主机执行命令。

python进入jumpserver,然后从jumpserver进入主机执行命令。
EN

Stack Overflow用户
提问于 2013-07-28 22:22:42
回答 2查看 5.5K关注 0票数 0

我想让SSH去跳服务器。从jumpserver,我想要SSH到主机并执行一个命令:'rpm -qa \ grep包‘并获得输出。完成后,我希望首先成功地注销主机,然后注销跳转服务器。

以下是我迄今所做的尝试:

代码语言:javascript
运行
复制
Import pexpect

options = '-q -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oPubkeyAuthentication=no'

child = pexpect.spawn('ssh ssheth@jumpserver %s'%(options), timeout=None)
child.expect(['password: '])
child.sendline('hello123')
child.expect('#')
child.sendline('ssh ssheth@host "rpm -qa | grep -v watch | grep extractor"')
child.expect(['password: '])
child.sendline(password)
child.logfile = fout
child.expect(".*\$ ", timeout=None)
child.close()

这会引发以下异常:

代码语言:javascript
运行
复制
Timeout exceeded in read_nonblocking().
<pexpect.spawn object at 0x7f007800d190>
version: 2.4 ($Revision: 516 $)
command: /usr/bin/ssh
args: ['/usr/bin/ssh', 'ssheth@jumpserver', '-q', '-oStrictHostKeyChecking=no', '-oUserKnownHostsFile=/dev/null', '-oPubkeyAuthentication=no']
searcher: searcher_re:
    0: re.compile("#")
buffer (last 100 chars): ssheth@jumpserver:~[ssheth@jumpserver ~]$ 
[ssheth@jumpserver ~]$ 
before (last 100 chars): ssheth@jumpserver:~[ssheth@jumpserver ~]$ 
[ssheth@jumpserver ~]$ 
after: <class 'pexpect.TIMEOUT'>
match: None
match_index: None
exitstatus: None
flag_eof: False
pid: 27286
child_fd: 91
closed: False
timeout: 2
delimiter: <class 'pexpect.EOF'>
logfile: None
logfile_read: None
logfile_send: None
maxread: 2000
ignorecase: False
searchwindowsize: None
delaybeforesend: 0.05
delayafterclose: 0.1
delayafterterminate: 0.1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-28 23:30:11

最简单的答案是打开一个端口转发到远程服务器。

这在bash中效果最好,但您可以进行子进程,也可以通过python运行它。

假设IP是:

  • jumpserver IP为151.121.121.121
  • 最后服务器IP为10.1.2.3。

如下所示

代码语言:javascript
运行
复制
# Open a local port 13000 that will map through jumpserver and 
# connect to finalserver on port 22
ssh -L 13000:10.1.2.3:22 username@151.121.121.121
# Then open an ssh session to localhost:13000 (which will forward to the
# finalserver.com and run your command)
ssh username@localhost -p 13000 'rpm -qa | grep package'

旁白:看看你期待的剧本,回忆过去的日子。Python有一些ssh包装器。帕拉米科交换矩阵一起使用。

票数 1
EN

Stack Overflow用户

发布于 2019-07-26 05:57:34

您可以使用普派伊安装pip

代码语言:javascript
运行
复制
pip install jumpssh
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17913540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档