天天看点

Python配合SCP实现文件批量下发

<code># -*- coding: utf-8 -*-</code>

<code>#!/usr/bin/env python</code>

<code>import</code> <code>pexpect,os    </code><code>#导入需要用到模块</code>

<code>def</code> <code>ssh_cmd(ip, shell_cmd):</code>

<code>passwd</code><code>=</code> <code>'1qaz#EDC'</code>

<code>print</code> <code>'host: %s is connected... '</code> <code>%</code> <code>ip</code>

<code>child </code><code>=</code> <code>pexpect.spawn(</code><code>'ssh root@%s'</code> <code>%</code> <code>(ip))</code>

<code>fout </code><code>=</code> <code>file</code><code>(</code><code>'log.txt'</code><code>,</code><code>'a'</code><code>)</code>

<code>child.logfile </code><code>=</code> <code>fout</code>

<code>try</code><code>:</code>

<code>i </code><code>=</code> <code>child.expect(</code><code>'password:'</code><code>)</code>

<code>if</code> <code>i </code><code>=</code><code>=</code> <code>0</code><code>:</code>

<code>child.sendline(passwd)</code>

<code>elif</code> <code>i </code><code>=</code><code>=</code> <code>1</code><code>:</code>

<code>child.sendline(</code><code>'yes\n'</code><code>)</code>

<code>child.expect(</code><code>'password: '</code><code>)</code>

<code>print</code> <code>'host:%s Login ok!'</code> <code>%</code> <code>ip</code>

<code>child.expect(</code><code>'#'</code><code>)</code>

<code>child.sendline(shell_cmd)    </code><code>#执行传过来的shell命令</code>

<code>print</code> <code>'host:%s Command Execution ok!'</code> <code>%</code> <code>ip</code>

<code>except</code> <code>pexpect.EOF:</code>

<code>print</code> <code>"Command run ok!"</code>

<code>child.close()</code>

<code>except</code> <code>pexpect.TIMEOUT:</code>

<code>print</code> <code>"Connect Timeout..."</code>

<code>#前面的ssh_cmd()作用为建立ssh连接</code>

<code>for</code> <code>i </code><code>in</code> <code>range</code><code>(</code><code>165</code><code>,</code><code>167</code><code>):</code>

<code>ipaddr </code><code>=</code> <code>'192.168.122.%s'</code> <code>%</code> <code>i</code>

<code>ssh_cmd(ipaddr,</code><code>'mkdir -p /etc/ceph'</code><code>)    </code><code>#ssh连接上远程主机后,在远程主机创建制定目录</code>

<code>os.environ[</code><code>'ip'</code><code>]</code><code>=</code><code>str</code><code>(ipaddr)    </code><code>#python变量和shell变量互用</code>

<code>os.system(</code><code>'sshpass -p 1qaz#EDC scp /home/testfile*.conf root@$ip:/etc/ceph'</code><code>)    #文件下发</code>

本文转自 TtrToby 51CTO博客,原文链接:http://blog.51cto.com/freshair/1863197