ssh 执行命令并实时显示结果

import paramiko

def main():
    sshClient = paramiko.SSHClient()
    sshClient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    sshClient.connect(hostname = "192.168.1.104", port = 22, username = "usr", password = "pwd")

    shell = sshClient.invoke_shell()
    shell.sendall("ping www.baidu.com -c 3\n")
    shell.sendall("exit\n")
    while True:
        data = shell.recv(2048).decode()
        if not data:
            print("quit now")
            break
        print(data, end = "")
    sshClient.close()

if __name__ == ‘__main__‘:
    main()

原文地址:https://www.cnblogs.com/diysoul/p/10727107.html

时间: 2024-11-09 07:09:31

ssh 执行命令并实时显示结果的相关文章

go ssh 执行命令

go ssh 执行命令 package main import ( "fmt" gossh "golang.org/x/crypto/ssh" "net" ) type Cli struct { user string pwd string addr string client *gossh.Client session *gossh.Session LastResult string } func (c *Cli) Connect() (*Cl

远程ssh执行命令时提示找不到命令

最开始的时候碰到这种问题,是在hadoop003上配置了jdk1.8, 在hadoop002上执行ssh hadoop003 java -version提示没有命令,先ssh hadoop003然后执行java -version则没有问题后来执行分发脚本时也碰到过这种问题,如果分步执行,先ssh到主机,然后执行命令就没有问题,然而直接ssh + 主机 + 命令就会报错,百度之后发现是ssh远程执行命令时加载的环境文件是~/.bashrc.所以解决的思路就是在~/.bashrc中添加需要的环境变量

php登陆ssh执行命令

<?php $connection=ssh2_connect('172.16.10.3',22);ssh2_auth_password($connection,$user,$pass);$cmd="/data/script/start.sh knowledgelib_fix_2";$ssh2_exec($connection,$cmd); ?>前提是php要安装ssh.so扩展.

使用ssh远程执行命令批量导出数据库到本地

前天正在跟前端的同事调试功能.服务器开好,模拟的玩家登录好,就在倒计时.这时突然运营的同事跑过来说要统计几个服务器玩家的一些情况,也就是需要从几个服的数据库导出部分玩家的数据.好吧,我看了一下时间,11:47.心想,跟前端调试完,去吃个饭再午休一下那就下午再给吧.没想对方来一句"就导个数据库而已,要这么久么?",而且还是直接跟我上司说的.我嚓,好吧,我导.可问题来了,平时的统计是由php做的,批量部署这些是由运维做的.服务端完全没有对应的工具.而且服务器是在阿里云上的,数据库的用户是限

使用ssh远程执行命令批量导出数据库到本地(转)

前天正在跟前端的同事调试功能.服务器开好,模拟的玩家登录好,就在倒计时.这时突然运营的同事跑过来说要统计几个服务器玩家的一些情况,也就是需要从几个服的数据库导出部分玩家的数据.好吧,我看了一下时间,11:47.心想,跟前端调试完,去吃个饭再午休一下那就下午再给吧.没想对方来一句"就导个数据库而已,要这么久么?",而且还是直接跟我上司说的.我嚓,好吧,我导.可问题来了,平时的统计是由php做的,批量部署这些是由运维做的.服务端完全没有对应的工具.而且服务器是在阿里云上的,数据库的用户是限

运维开发:python websocket网页实时显示远程服务器日志信息

功能:用websocket技术,在运维工具的浏览器上实时显示远程服务器上的日志信息 一般我们在运维工具部署环境的时候,需要实时展现部署过程中的信息,或者在浏览器中实时显示程序日志给开发人员看.你还在用ajax每隔段时间去获取服务器日志?out了,试试用websocket方式吧 我用bottle框架,写了个websocket服务端,浏览器连接到websocket server,再用python subprocess获取远程服务器的日志信息,subprocess,就是用Popen调用shell的sh

批量复制及执行命令shell脚本

平时在处理一个或几个机器运行环境时,一个机器一个机器处理也能接受,但是如果是一批机器,几十或几百台,要是一台一台去安装环境,光是输入同一的命令,估计你自己都想吐,所有聪明的人会想一些偷懒的办法,确实可以找到一些省时省力的方法,比如写一个批量处理shell脚本,这几天在处理一批(八九十台)机器环境,找了一些批量处理的脚本,包括批量传输(scp)文件到多台机器上.批量执行命令到多台机器.还有需要交互的命令,下面记录一些这些命令: 机器IP文件:ip.txt 192.168.10.201 192.16

ssh伪登陆执行远程主机脚本命令 C程序基于ssh passwordless执行远程主机命令及基于配置文件的验证伪登陆执行命令

1,基于有密码及免秘钥在远程主机上执行命令及脚本 ssh -T ip "CLI or shell.sh"; 2,C程序实现上述功能--基于password-less 将上面简单C程序打包移植到别的系统下使用测试 authorized_keys; 将本身的~/.ssh/id_rsa.pub 复制到需要passwordLess 的主机并将id_rsa.pub内容追加到~/.ssh/authorized_keys里面,便可passwordless登陆. 3,复制ssh秘钥到目标主机 4,从某

ssh执行sudo命令所遇到的错误解决

ssh 执行sudo 命令 遇到错误 ssh [email protected] "sudo CMD" 错误一:sudo: sorry, you must have a tty to run sudo 解决方式一: ssh 加 -t 参数 即:ssh -t [email protected] "sudo CMD" 解决方式二: 在/etc/sudoers 配置文件中注释Defaults    requiretty这行(这样有缺点,如果ssh带密码会在进程中显示) 错