1. 程式人生 > >Python免祕鑰ssh遠端登入執行命令and本地執行shell命令

Python免祕鑰ssh遠端登入執行命令and本地執行shell命令

python遠端執行

python paramiko 模組的應用

環境

# yum install python-dev
# yum install python-devel
# pip install pycrypto
# pip install paramiko
# pip install ssh

方法體

import paramiko
def DiskCheck(ip):
    try:
        # 建立一個sshclient物件
        ssh = paramiko.SSHClient()
        # 允許將信任的主機自動加入到host_allow 列表,此方法必須放在connect方法的前面
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 指定本地的RSA私鑰檔案,如果建立金鑰對時設定的有密碼,password為設定的密碼,如無不用指定password引數 # pkey = paramiko.RSAKey.from_private_key_file('/home/super/.ssh/id_rsa', password='12345') pkey = paramiko.RSAKey.from_private_key_file('/home/ptop/topicjie/scripts/keys/id_rsa'
) # 建立連線 ssh.connect(hostname=ip, port=22, username='ptop', pkey=pkey) # 執行命令 stdin, stdout, stderr = ssh.exec_command("for i in $(df -h|grep data|awk '{print $6}'); do touch $i/test.txt; done; df -h|grep data"
) # 結果放到stdout中,如果有錯誤將放到stderr中 print(stdout.read().decode()) print(stderr.read()) # 關閉連線 ssh.close()

提示:最好採用ssh免祕鑰登入的模式,儘量不要出現明文密碼

本機執行shell指令碼

python中有很多呼叫本地shell指令碼的方法 類似commands 等,不過現在官方推薦的是使用subprocess 進行本地shell指令碼的呼叫,這個模組的方法較多。

import shlex
import subprocess

def execute_command(cmdstring, cwd=None, timeout=None, shell=False):
    if shell:
        cmdstring_list = cmdstring
    else:
         cmdstring_list = shlex.split(cmdstring)
    if timeout:
        end_time = datetime.datetime.now() + datetime.timedelta(seconds=timeout)
        #沒有指定標準輸出和錯誤輸出的管道,因此會列印到螢幕上;
    sub = subprocess.Popen(cmdstring_list, cwd=cwd, stdin=subprocess.PIPE,shell=shell,bufsize=4096)
    #subprocess.poll()方法:檢查子程序是否結束了,如果結束了,設定並返回碼,放在subprocess.returncode變數中 
    while sub.poll() is None:
        time.sleep(0.1)
        if timeout:
            if end_time <= datetime.datetime.now():
                raise Exception("Timeout:%s"%cmdstring)

    return str(sub.returncode)
#方法測試
p=execute_command("hive -f "+path)

相關推薦

Pythonssh遠端登入執行命令and本地執行shell命令

python遠端執行 python paramiko 模組的應用 環境 # yum install python-dev # yum install python-devel # pi

centos7-ssh登入

實驗環境:  主機1:controller    ip:192.168.1.10      主機2:compute      ip:192.168.2.10  controller主機執行ssh

使用ansible 批量部署ssh登入

1 建立ssh祕鑰 yum install epel-release -y yum install sshpass -y ssh-keygen -t rsa 2 批量複製祕鑰並授權 ansible web -m shell -a 'mkdir ~/.ssh' -k ansi

ssh都追加到authorized_keys檔案了,但是還是無法登陸

步驟:     1、主機生成公鑰 ssh-keygen -t rsa -P ''   一路回車     2、從主機節點拷貝id-rsa.pub到從機worker1      &

Linux之Python的使用SSH遠端登入Ubuntu

1.介紹 SSH為Secure Shell的縮寫,由IETF的網路工作小組所制定。SSH為建立在應用層和傳輸基礎上的安全協議。 SSH是目前比較可靠,專門遠端登入會話和其他網路服務提供安全的協議。常用於遠端登入,以及使用者之間進行資料拷貝。幾乎所有UNIX平臺包括:HP-UX、Linux、A

SSH遠端登入執行命令指令碼

一、簡述 運維工作中遠端登入執行命令的指令碼很常用,下面分享一下我常用的指令碼 二、指令碼內容 #!/bin/bash SCRIPT_NAME=`basename $0` CURRENT_DIR=$(

python pexpect ssh 遠端登入伺服器

使用了python中的pexpect模組,在測試程式碼之前,可輸入python進入互動介面,輸入help('pexpect'),查詢是否本地含有pexpect模組。 如果沒有,linux系統輸入 easy_install pexpect便可自動安裝。 測試程式碼,連線127

ECS Linux 伺服器公SSH登入

Ubuntu 14.04.1為例,設定步驟如下: 一. 生成金鑰的公鑰和私鑰 # ssh-keygen -t rsa  Generating public/private rsa key pair. Enter file in which to save the key (/roo

centos6.7登入

免祕鑰登入part one:兩臺可以相互打通的linux伺服器直接進行無密碼登入每一臺linux都有一個密碼儲存機制(容器)密碼:123456-->加密-->祕鑰(私鑰)/公鑰建立在兩臺或者多臺伺服器之間,如果為測試的情況,可以使用一臺注意事項:1.首先伺服器之

shell expect自動化建立使用者,修改密碼,多臺機器一鍵登入

1.建立使用者–50臺機器上建立使用者,不可能手動去幹的。 useradd.sh中的程式碼: #!/bin/bash user=cow password=cow useradd -d /

centos7配置登入

1.基礎準備 hosts 192.168.11.90 Master 192.168.11.103 Node1 192.168.11.104 Node2 2.開始配置 1) 三臺主機檢查 ~/.ssh 資料夾沒有則新建 2) 生成金鑰,在各節點上均執行如下命令生成

ssh遠端登入不上的處理

最近ssh遠端主機突然登入不上,提示如下: 後來諮詢了一下雲主機的客服,估計我們的主機時多次嘗試密碼錯誤被系統遮蔽IP了。於是問了一下同事,確實有同事最近密碼錯誤多次嘗試的問題。 於是按照客服給的方法測試,果然解決了 例如本地外網地址為192.168.1.103,且在/etc/hosts.deny裡有記

Linux SSH 遠端登入錯誤解決辦法 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED

最近在登入一臺機器的時候,發現無法等入了,出現以下錯誤: 於是就度娘(不得不說搜尋引擎是個好東西 -- ),找了好久發現有篇文章裡面提到.ssh/known_hosts檔案,檢視果然有這個檔案: 就想這檔案是個啥東東,待一查,才明白了,原來known_hosts是記錄遠端主機的公鑰的檔

SSH遠端登入另一臺linux

登入: 可以用ssh命令列方式登入。對方需要開啟ssh服務 ssh [-l login_name] [-p port] [[email protected]]hostname 例如, 不指定使用者: ssh 192.168.0.1 使用root使用者登入 192.168.0.1

Linux CentOS 7.*允許或禁止root使用者ssh遠端登入,並將22埠更新為11111

1)vim /etc/ssh/sshd_config,將PermitRootLogin的值改成no,並儲存 PermitRootLogin yes更改為no  重啟ssh  systemctl restart sshd 禁止登入了, 否則就能登入 &nbs

樹莓派3B連線到wifi和ssh遠端登入

一、樹莓派3B連線到wifi 在安裝了ubuntu系統時,會提示設定要連線的wifi,這時可以選擇wifi,輸入passwd,在/etc/NetworkManager/system-connections目錄下儲存有 以所連線的wifi的名稱的檔名,用root使用者修改該檔案的許可權為777,即

ssh遠端登入輸入yes說明

[[email protected] .ssh]# ssh 192.168.157.101再次登入同一個機器的時候,就不需要輸入yes了這是因為第一次輸入“yes”後,在~/.ssh/known_hosts中記錄了連結到對方時,對方給的host key。之後每次遠端鏈到統一臺機器接都會檢查目前對方給

ssh遠端登入Linux(ubuntu)

一般流程,如果有問題,按照下面步驟排查一遍即可 檢視ssh是否開啟 service ssh status service ssh start service ssh restart service ssh stop 如果沒有安裝 sudo apt-get install

SSH遠端登入配置檔案sshd_config詳解

SSH由客戶端和服務端的軟體組成,在客戶端可以使用的軟體有SecureCRT、putty、Xshell等, 而在伺服器端執行的是一個sshd的服務,通過使用SSH,可以把所有傳輸的資料進行加密,而且也能夠 防止dns和IP欺騙,此外,SSH傳輸的資料是經過壓縮的,可以加快傳輸速度 其伺服器端的配

打造可在SSH遠端登入中使用的Vim IDE配置

由於公司需要在遠端伺服器上進行開發,所以一直希望能有一款可以方便通過SSH遠端登陸後使用的Vim配置,雖然網上有很多高手的配置資料,但是很大一部分都是作為本地使用的,而且往往一些功能會出現BUG,或者失靈的情況。所以,經過一段時間的思考,還是決定自行進行Vim的配置,又經過一