ssh paramiko && subprocess

subprocess:

#!/usr/bin/python3
import paramiko
import os
import sys
import subprocess
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
from src.logutils import logger
log=logger("root",rootstdout=True,handlerList=['I','E'])
class SshConnect(object):

    def __init__(self,ip,user,pwd,port):
        self.port=port
        self.pwd=pwd
        self.user=user
        self.ip=ip
        try:
            client=paramiko.SSHClient()
            client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            client.connect(self.ip,self.port,self.user,self.pwd)
            self.client=client
        except ConnectionError as e:
            log.error(e)
    def exe_cmd(self,shell):
            stdin, stdout, stderr = self.client.exec_command(shell)
            res,err = stdout.read(),stderr.read()
            result = res if res else err
            return result
            # print(result.decode("utf-8"))
    def close_client(self):
        self.client.close()
def run():
    ip='192.168.81.129'
    port=22
    pwd='admin'
    user='root'
    client=SshConnect(ip,user,pwd,port)
    res=client.exe_cmd('ps -ef|grep python&&ifconfig')
    log.info(res)

def run_sshpass():
    shell=" ps -ef|grep java&&df -m"
    sub=subprocess.Popen(shell,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    sub.wait(timeout=20)
    res=sub.stdout.readlines()
    log.info(deal_res(res))

def deal_res(res):
    std=''
    for i  in res:

        output=i.decode("utf-8")

        std +=output
    return std

if __name__ == '__main__':
    run_sshpass()
    #run()
[root@hostuser src]# 

  

[root@hostuser src]# python3 sshutils.py 
[INFO]2019-05-14 00:31:27 Tue --root-- sshutils.py:
root      28680  28677  0 00:31 pts/0    00:00:00 /bin/sh -c  ps -ef|grep java&&df -m
root      28683  28680  0 00:31 pts/0    00:00:00 grep java
Filesystem              1M-blocks  Used Available Use% Mounted on
/dev/mapper/centos-root     27627  8616     19012  32% /
devtmpfs                      894     0       894   0% /dev
tmpfs                         910     1       910   1% /dev/shm
tmpfs                         910    10       901   2% /run
tmpfs                         910     0       910   0% /sys/fs/cgroup
/dev/sda1                    1014   232       783  23% /boot

  paramiko:

#!/usr/bin/python3
import paramiko
import os
import sys
import subprocess
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
from src.logutils import logger
log=logger("root",rootstdout=True,handlerList=['I','E'])
class SshConnect(object):

    def __init__(self,ip,user,pwd,port):
        self.port=port
        self.pwd=pwd
        self.user=user
        self.ip=ip
        try:
            client=paramiko.SSHClient()
            client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            client.connect(self.ip,self.port,self.user,self.pwd)
            self.client=client
        except ConnectionError as e:
            log.error(e)
    def exe_cmd(self,shell):
            stdin, stdout, stderr = self.client.exec_command(shell)
            res,err = stdout.read(),stderr.read()
            result = res if res else err
            return result
            # print(result.decode("utf-8"))
    def close_client(self):
        self.client.close()
def run():
    ip='192.168.81.129'
    port=22
    pwd='admin'
    user='root'
    client=SshConnect(ip,user,pwd,port)
    res=client.exe_cmd('ps -ef|grep python&&ifconfig')
    log.info(res)

def run_sshpass():
    shell=" ps -ef|grep java&&df -m"
    sub=subprocess.Popen(shell,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    sub.wait(timeout=20)
    res=sub.stdout.readlines()
    log.info(deal_res(res))

def deal_res(res):
   res1= res.decode("utf-8")
   
   return res1

if __name__ == '__main__':
    #run_sshpass()
    run()
[root@hostuser src]# vi sshutils.py 
[root@hostuser src]# python3 sshutils.py 
[INFO]2019-05-14 00:28:19 Tue --paramiko.transport-- transport.py:
Connected (version 2.0, client OpenSSH_7.4)
/usr/local/lib/python3.7/site-packages/paramiko/kex_ecdh_nist.py:39: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
  m.add_string(self.Q_C.public_numbers().encode_point())
/usr/local/lib/python3.7/site-packages/paramiko/kex_ecdh_nist.py:96: CryptographyDeprecationWarning: Support for unsafe construction of public numbers from encoded data will be removed in a future version. Please use EllipticCurvePublicKey.from_encoded_point
  self.curve, Q_S_bytes
/usr/local/lib/python3.7/site-packages/paramiko/kex_ecdh_nist.py:111: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
  hm.add_string(self.Q_C.public_numbers().encode_point())
[INFO]2019-05-14 00:28:19 Tue --paramiko.transport-- transport.py:
Authentication (publickey) failed.
[INFO]2019-05-14 00:28:19 Tue --paramiko.transport-- transport.py:
Authentication (password) successful!
[INFO]2019-05-14 00:28:45 Tue --root-- sshutils.py:
b'root      28245  16287  2 00:28 pts/0    00:00:00 python3 sshutils.py\nroot      28310  28248  0 00:28 ?        00:00:00 bash -c ps -ef|grep python&&ifconfig\nroot      28326  28310  0 00:28 ?        00:00:00 grep python\nens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500\n        inet 192.168.81.129  netmask 255.255.255.0  broadcast 192.168.81.255\n        inet6 fe80::f08c:a9:42b2:6ec4  prefixlen 64  scopeid 0x20<link>\n        ether 00:0c:29:11:d6:35  txqueuelen 1000  (Ethernet)\n        RX packets 7533  bytes 640098 (625.0 KiB)\n        RX errors 0  dropped 0  overruns 0  frame 0\n        TX packets 6119  bytes 755348 (737.6 KiB)\n        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0\n\nlo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536\n        inet 127.0.0.1  netmask 255.0.0.0\n        inet6 ::1  prefixlen 128  scopeid 0x10<host>\n        loop  txqueuelen 1000  (Local Loopback)\n        RX packets 52950  bytes 43181732 (41.1 MiB)\n        RX errors 0  dropped 0  overruns 0  frame 0\n        TX packets 52950  bytes 43181732 (41.1 MiB)\n        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0\n\n'

  

猜你喜欢

转载自www.cnblogs.com/SunshineKimi/p/10859935.html