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

通过python subprocess.Popen的ssh :如果请求密码,则终止

在使用Python的subprocess模块中的Popen函数执行ssh命令时,如果请求密码,则可以通过终止进程来处理。这种情况通常发生在尝试通过ssh连接到远程服务器时,需要输入密码进行身份验证。

要实现这个功能,可以使用try-except语句来捕获密码请求异常,并在异常处理中终止进程。以下是一个示例代码:

代码语言:txt
复制
import subprocess

try:
    ssh_process = subprocess.Popen(['ssh', 'user@hostname'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = ssh_process.communicate()
except subprocess.CalledProcessError as e:
    # 如果请求密码,则终止进程
    if 'Password:' in e.stderr.decode():
        ssh_process.terminate()

在上述代码中,我们使用subprocess.Popen函数创建一个ssh进程,并将其存储在ssh_process变量中。然后,我们使用communicate方法来获取ssh进程的输出结果。

如果在执行ssh命令时,出现了密码请求异常(subprocess.CalledProcessError),我们可以通过检查异常的stderr属性来确定是否请求了密码。如果stderr中包含"Password:"字符串,说明需要输入密码进行身份验证。在这种情况下,我们可以使用ssh_process.terminate()方法终止进程。

需要注意的是,上述代码只是一个示例,实际使用时需要根据具体情况进行适当的修改和调整。

推荐的腾讯云相关产品:腾讯云云服务器(CVM) 产品介绍链接地址:https://cloud.tencent.com/product/cvm

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

并行处理(二)、subprocess模块

subprocess模块是python从2.4版本开始引入模块。主要用来取代 一些旧模块方法,如os.system、os.spawn*、os.popen*、commands.*等。...subprocess通过子进程来执行外部指令,并通过input/output/error管道,获取子进程执行返回信息。...需要说明是,该方法在python3.x中才有。 subprocess.Popen(): 在一些复杂场景中,我们需要将一个进程执行输出作为另一个进程输入。...如果env=None,默认从父进程继承环境变量 universal_newlines:不同系统换行符不同,当该参数设定为true时,表示使用\n作为换行符 示例1,在/root下创建一个suprocesstest...目录: >>> a = subprocess.Popen('mkdir subprocesstest',shell=True,cwd='/root') 示例2,使用python执行几个命令: import

34410
  • Python标准库06 子进程 (subprocess包)

    Python中,我们通过标准库中subprocess包来fork一个子进程,并运行一个外部程序(fork,exec见Linux进程基础)。...subprocess.check_output() 父进程等待子进程完成 返回子进程向标准输出输出结果 检查退出信息,如果returncode不为0,举出错误subprocess.CalledProcessError...Python将先运行一个shell,再用这个shell来解释这整个字符串。 shell命令中有一些是shell内建命令,这些命令必须通过shell运行,$cd。...通过使用subprocess包,我们可以运行外部程序。这极大拓展了Python功能。...如果你已经了解了操作系统某些应用,你可以从Python中直接调用该应用(而不是完全依赖Python),并将应用结果输出给Python,并让Python继续处理。

    2.8K60

    python模块--subprocess

    该模块拥有多个方法,具体如下: subprocess.call() 直接打印系统命令执行结果,如果执行成功,返回状态码为0,否则为1,例如: #执行成功 import subprocess CALL1... 1.1.1.2 -n 1',shell=True) print("Returncode:%d"%CALL2) 打印结果为: 正在 Ping 1.1.1.2 具有 32 字节数据: 请求超时。...: 请求超时。...subprocess.check_output()     不会将系统命令执行结果直接打印出来,返回一个bytes类型对象,该对象包含了系统命令执行结果,如果执行失败会抛出subprocess.CalledProcessError....kill() # 终止子进程 POPEN1.terminate() # 终止子进程 POPEN1.send_signal() # 向子进程发送信号 pid属性包含了子进程pid号     2.subprocess.Popen

    66310

    python—subprocess、gl

    Python中,我们通过标准库中subprocess包来fork一个子进程,并运行一个外部程序。...检查退出信息,如果returncode不为0,举出错误subprocess.CalledProcessError,该对象包含有returncode属性和output属性,output属性为标准输出输出结果...;shell=True时,如果args是字符串,Popen直接调用系统Shell来执行args指定程序,如果args是一个序列,args第一项是定义程序命令字符串,其它项是调用系统Shell时附加参数.../usr/bin/env python import subprocess child = subprocess.Popen("ping -c 3 www.baidu.com",shell=True)...()       # 终止子进程 child.pid               #存储子进程PID 2.子进程文本流控制 子进程标准输入、标准输出和标准错误如下属性分别表示: child.stdin

    1.5K20

    python中常用到模块和包名称

    1 paramiko  (基于openssh,python封装ssh) 模块python自带 用法: import paramiko                                          ...ssh -p58422 oldboy@192.168.100.20 -o StrictHostKeyChecking=no 'uptime' 2 subprocess(尽量不要用这个模块,返回不美观,如果只是执行...uuid 常用: uuid1函数,通过mac和时间戳生成全球唯一id In [49]: uuid.uuid1() Out[49]: UUID('cbb8c051-0929-11e6-9ba3-8c2937eebf3a...re.match(r“10.2,s”)   和  re.search(r”^10.2”,s)  是一样 注: 1 匹配返回对象本身,不匹配放回None 2 match只匹配字符串开始,如果开始不符合正则表达式...,就返回None,而search匹配整个字符串,匹配到了算匹配成功 12 collections 模块OrderedDict 函数 python自带内模块 作用: 定义有序字典,当有需要dict字典

    1.3K20

    python 标准类库-并行执行之subprocess-子进程管理

    如果sell为True,推荐传递字符串参数给args Unix操作系统上,shell=True,shell默认为/bin/sh。如果args为字符串,字符串指明了需要通过shell执行命令。...如果进程在timeout(单位 秒)之后依然没终止抛出TimeoutExpired 异常,可以捕获该异常并再次尝试等待。...等待子进程终止。 input:可选参数,参数值为发送给子进程数据,如果不需要发送数据,则为None。...如果进程在timeout(单位 秒)之后依然没终止抛出TimeoutExpired 异常,(Python3.3.2中发丝。捕获该异常并重试comunicate,不会丢失任何输出。...注意:如果设置了shell=True,该属性值为衍生shell进程id Popen.returncode 子进程返回代码,如果值为None表明进程还没终止

    4.1K20

    python subprocess模块

    run()方法在python3.5才有,python2.x没有,2.x用subprocess.call(),当然python3.X版本也支持call() 常见subprocess方法 subprocess.call...执行命令,如果执行状态码是 0 ,返回0,否则抛异常 subprocess.check_call(["ls","-l"]) subprocess.check_call("exit...1",shell=True) 抛出异常:subprocess.CalledProcessError: subprocess.check_output 执行命令,如果状态码是 0 ,返回执行结果...,用于指定一个可执行对象(callable object),它将在子进程运行之前被调用 close_sfs:在windows平台下,如果close_fds被设置为True,新创建子进程将不会继承父进程输入...:如 python 需要交互命令示例: import subprocess obj = subprocess.Popen(["python"], stdin=subprocess.PIPE

    1K20

    Python3之常用模块

    在第一次导入某个模块时(比如test_module1),会先检查该模块是否已经被加载到内存中(当前执行文件名称空间对应内存),如果直接引用(python解释器启动时会加载一些模块到内存中,可以用...通过一个函数,把任意长度数据按照一定规则转换成一个固定长度数据串(通常用16进制字符串表示) # 当我们网络传输一些数据时候如果是明文,有人窃取到这个数据,那么我们就会存在安全隐患,如果我们加密了...密码加密 # 2. 文件一致性校验 # hashlib特征以及使用要点: # 1. bytes类型数据 ---> 通过hashlib算法 ---> 固定长度字符串 # 2....,该对象可以通过调用group()方法得到匹配字符串,如果字符串没有匹配,返回None。...paramiko模块 一个基于Python实现SSH远程安全链接,用于ssh远程执行命令,文件传输ssh客户端模块.

    2K50

    Python实现cmd命令连续执行

    之前是想写一个微信控制程序,通过登录网页微信,可以直接执行命令行代码。也不用ssh登录了,想法很方便。 但是现实很残酷,微信登录这块基本没有问题,已经有大佬写好了,但是命令行执行遇到问题了。...单开进程 那么自然想到通过启动进程方式来实现,Python有对进程封装subprocess,可以通过创建Popen对象来实现。我只要单开一个bash,与它进行交互就好啦。...解决后完整测试代码: import subprocess import os import threading p = subprocess.Popen('/bin/bash', shell=True...注意:如果输入一个不存在命令,输出内容不在stdout流中,要到stderr中获取。...就这个微信工具来说,自然可以直接通过时间判断,若超过1s没有,认为是一组,统一返回。感觉有些牵强,暂时没有想到更好解决办法。

    3.9K10

    Python模块之subprocess

    一 简介 在使用Python 开发MySQL自动化相关运维工具时候,遇到一些有意思问题,本文介绍Python subprocess 模块以及如何和MySQL交互具体操作,如启动 ,关闭 ,备份数据库...如果 args是一个字符串,它声明了通过shell执行命令。这意味着,字符串必须要使用正确格式。 如果 args是一个序列,第一个元素就是命令字符串,而其它元素都作为参数使用。...注意:如果希望通过进程stdin向其发送数据,在创建Popen对象时候,参数stdin必须被设置为PIPE。...Popen.terminate() 终止子进程。 Popen.kill() 杀死子进程。 Popen.pid 获取子进程进程ID。...那么坑爹问题来了:当你要使用Pythonsubprocess.Popen实现命令行之间管道传输,同时数据源又非常大(比如读取上GB文本或者无尽网络流)时,官方文档不建议用wait,同时communicate

    1.9K10

    Linux常见持久化后门汇总

    PAM配置文件夹中寻找是否存在对应名称配置信息(su) 3、如果被控主机不允许root登陆可用其他已存在用户登陆 4、通过软连接方式,实质上PAM认证是通过软连接文件名(如:/tmp/su,/home.../usr/local/su 文件,也可以在其他目录,su文件名字不能变,变了就无法登录.当然可以通过其他设置,更改su名字也是可以.然后启动,并指定监听12345端口,登录时候密码随意即可....攻击者id_rsa.pub内容粘贴到文件里面(如果原来存在内容就另起一行粘贴) # chmod 600 /root/.ssh/authorized_keys # chmod 700 /root/.ssh...Rootkits,是通过伪造ssh协议漏洞实现远程登陆特点是配置简单并可以自定义验证密码和端口号..../master/pam.sh 0x09:创建不能删除文件 使用chattr来给与隐藏权限.这些权限需要使用lsattr这个命令才可以查看到,而如果要修改隐藏权限,使用chattr这个命令来进行修改

    3.9K30

    Python模块学习:subprocess模块详解

    subprocess.check_output()Python 2.7中新增函数。执行指定命令,如果执行状态码为0返回命令执行结果,否则抛出异常。...说明:1.在Python 3.5之后版本中,官方文档中提倡通过subprocess.run()函数替代其他函数来使用subproccess模块功能;2.在Python 3.5之前版本中,我们可以通过...()、subprocess.check_call()和subprocess.check_output()都是通过subprocess.Popen封装来实现高级函数,因此如果我们需要更复杂功能时,可以通过...通常情况下,退出状态码为0表示进程成功运行了;一个负值-N表示这个子进程被信号N终止了stdout: 从子进程捕获stdout。...由于subprocess模块底层进程创建和管理是由Popen类来处理,因此,当我们无法通过上面哪些高级函数来实现一些不太常见功能时就可以通过subprocess.Popen类提供灵活api来完成

    53540

    Linux常见持久化后门汇总

    PAM配置文件夹中寻找是否存在对应名称配置信息(su) 3、如果被控主机不允许root登陆可用其他已存在用户登陆 4、通过软连接方式,实质上PAM认证是通过软连接文件名(如:/tmp/su,/home.../usr/local/su 文件,也可以在其他目录,su文件名字不能变,变了就无法登录.当然可以通过其他设置,更改su名字也是可以.然后启动,并指定监听12345端口,登录时候密码随意即可....攻击者id_rsa.pub内容粘贴到文件里面(如果原来存在内容就另起一行粘贴) # chmod 600 /root/.ssh/authorized_keys # chmod 700 /root/.ssh...Rootkits,是通过伪造ssh协议漏洞实现远程登陆特点是配置简单并可以自定义验证密码和端口号..../master/pam.sh 0x09:创建不能删除文件 使用chattr来给与隐藏权限.这些权限需要使用lsattr这个命令才可以查看到,而如果要修改隐藏权限,使用chattr这个命令来进行修改

    65530

    Python 【基础面试题】

    当我们使用setDaemon(True)方法,设置子线程为守护线程时,主线程一旦执行结束,全部线程全部被终止执行,可能出现情况就是,子线程任务还没有完全执行结束,就被迫停止。...如果客户端在收到服务器给它断开连接请求之后,回应完服务器就直接断开连接的话,若服务器没有收到回应就无法进入CLOSE状态,所以客户端要等待两个最长报文段寿命时间,以便于服务器没有收到请求之后重新发送请求...paramiko是用python语言写一个模块,遵循SSH2协议,支持以加密和认证方式,进行远程服务器连接 由于使用python这样能够跨平台运行语言,所以所有python支持平台,如Linux..., Solaris, BSD,MacOS X, Windows等,paramiko都可以支持 如果需要使用SSH从一个平台连接到另外一个平台,进行一系列操作时,paramiko是最佳工具之一 现在如果需要从...python2除法中不是浮点数只返回商,python3除法返回值正常。 python3运行程序可以识别相同目录下普通文件夹中模块,python2只能识别文件夹标识后包中模块。

    1.2K20

    Python,Shell 和 三个标准文件

    场景 使用 Python 执行 Shell 命令(或者脚本),有两种执行场景: 等待,直到命令执行完毕,一次性获取返回结果,做一些你想做事情; 命令执行同时,实时获取命令持续输出,做一些你想做事情...等待进程终止。可选 input 参数应该是要发送到子进程字符串,如果没有数据应该发送给子进程,则为 None。 communicate() 返回一个元组 (stdout, stderr)。...这里其实是一个同步过程,进程终止后才会返回所读取到数据(进程终止,文件自然也结尾了),也就是 communicate() 方法直接使命令执行变为了同步,不执行完成就一直阻塞。...如果我们执行 ping zhihu.com 等不会自己终止命令,这种方式会一直卡死,因为进程一直没有结束,文件也一直不会结尾。 那么类似这种持续输出结果命令如何执行呢?...返回值是 '' 时候,迭代器终止,本篇不详细讲,有兴趣可以留言提问哦

    1.4K60
    领券