相关疑难解决方法(0)

JSch中'shell'通道和'exec'通道之间有什么区别?

我希望能够将Java应用程序中表示为字符串的许多连续命令发送到SSH服务器以供执行.我应该使用:

Channel channel = session.openChannel("shell");
Run Code Online (Sandbox Code Playgroud)

-要么-

Channel channel = session.openChannel("exec");
Run Code Online (Sandbox Code Playgroud)

java ssh jsch

28
推荐指数
4
解决办法
3万
查看次数

从paramiko ssh exec_command连续获取输出

我正在使用paramiko在远程机器上通过ssh执行长时间运行的python脚本.工作就像一个魅力,到目前为止没有问题.

不幸的是,stdout(分别是stderr)只在脚本完成后显示!但是,由于执行时间的原因,我更倾向于在打印时输出每个新行,而不是之后.

remote = paramiko.SSHClient()
remote.set_missing_host_key_policy(paramiko.AutoAddPolicy())
remote.connect("host", username="uname", password="pwd")

# myScript produces continuous output, that I want to capture as it appears    
stdin, stdout, stderr = remote.exec_command("python myScript.py")
stdin.close()
for line in stdout.read().splitlines():
    print(line)
Run Code Online (Sandbox Code Playgroud)

怎么能实现这一目标? 注意:当然可以通过另一个ssh会话将输出传输到文件并"减少"此文件,但这非常难看,我需要一个更清洁,理想的pythonic解决方案:)

python ssh interactive stdout paramiko

17
推荐指数
4
解决办法
4万
查看次数

在设备上使用 Paramiko exec_command 执行命令不起作用

我正在尝试使用 Paramiko 将 SSH 连接到 Brocade 交换机并执行远程命令。代码如下:

def ssh_connector(ip, userName, passWord, command):
 ssh = paramiko.SSHClient()
 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 ssh.connect(ip, username=userName, password=passWord, port=22)
 stdin, stdout, stderr = ssh.exec_command(command)
 print stdout.readlines()

ssh_connector(ip, userName, passWord, 'show running-config')
Run Code Online (Sandbox Code Playgroud)

在尝试运行代码时,我遇到了一个奇怪的错误,如下所示。

协议错误,不是以 scp 开头!

我不知道错误的原因,也不知道 SSH 连接是否成功。你能帮我解决这个问题吗?

python ssh switching paramiko

3
推荐指数
1
解决办法
3793
查看次数

有没有一种简单的方法可以摆脱使用Python的Paramiko库进行SSH并从远程计算机的CLI获取输出时出现的垃圾值?

我使用Python的Paramiko库来SSH远程机器并从命令行获取一些输出.我看到很多垃圾打印和实际输出.如何摆脱这个?

chan1.send("ls\n")
output = chan1.recv(1024).decode("utf-8")
print(output)
[u'Last login: Wed Oct 21 18:08:53 2015 from 172.16.200.77\r', u'\x1b[2J\x1b[1;1H[local]cli@BENU>enable', u'[local]cli@BENU#Configure',
Run Code Online (Sandbox Code Playgroud)

我想从输出中消除[2J\x1b [1; 1Hu].他们是垃圾.

python ssh shell ansi-escape paramiko

3
推荐指数
1
解决办法
1389
查看次数

使用Python Paramiko exec_command执行某些Unix命令会失败,并显示“ <command> not found”

我试图sesu在Paramiko的帮助下从Python在Unix服务器中运行命令exec_command。但是,当我运行此命令exec_command('sesu test')时,

sh:sesu:未找到

当我运行简单ls命令时,它会提供所需的输出。仅使用sesu命令无法正常工作。

这是我的代码的样子:

import paramiko

host = host
username = username
password = password
port = port

ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,port,username,password)
stdin,stdout,stderr=ssh.exec_command('sesu test')
stdin.write('Password')
stdin.flush()
outlines=stdout.readlines()
resp=''.join(outlines)
print(resp)
Run Code Online (Sandbox Code Playgroud)

python ssh shell paramiko

3
推荐指数
1
解决办法
969
查看次数

知道为什么 paramiko 发送 \x07 而不是 \t 到远程服务器吗?

在过去的几天里,我一直在努力弄清楚为什么 paramiko 发送 \x07 而不是 tab 到远程会话。我使用 paramikos invoke_shell 因为我需要运行几个互连的命令。除了这部分之外,一切正常:

check_export = f'echo -e \"this\tis\tjust a test\" > /tmp/export'
Run Code Online (Sandbox Code Playgroud)

这是简化版本,唯一重要的部分是我需要用制表符分隔单词(仅在某些地方)。print 返回正确的形式:

echo -e "this   is      just a test" > /tmp/export
Run Code Online (Sandbox Code Playgroud)

但是当我从 paramiko 会话检查 recv() 时,我看到了这个:

b'echo -e "this\x07is\x07just a test" > /tmp/export\r\n[root@server~]# '
Run Code Online (Sandbox Code Playgroud)

因此,文件 /tmp/export 不包含制表符,并且前 3 个单词被挤在一起。我尝试提供文字选项卡,\t,U00000009,但没有任何效果。
我还尝试对字符串执行 .encode() ,但出现错误,指出需要字节,而不是字符串。

我在这里缺少什么?我希望得到一些意见。谢谢

python paramiko

0
推荐指数
1
解决办法
340
查看次数

标签 统计

paramiko ×5

python ×5

ssh ×5

shell ×2

ansi-escape ×1

interactive ×1

java ×1

jsch ×1

stdout ×1

switching ×1