python Pexpect 实现输密码 scp 拷贝的方法

yipeiwu_com7年前Python基础

在服务器A上的程序用到服务器B上的文件data,并且需要定期更新文件。 但是直接在bash文件中使用

scp -P 1000 192.168.199.10:/temp/data /temp

由于权限限制,不能免ssh密码拷贝,会要求输入B机器的密码。本想直接在bash文件中使用Pexpect 来实现自动输入密码,并scp拷贝文件,但是权限的限制导致不能安装使用Pexpect 。

最后考虑使用python实现。

环境:

python2.7 centos

from pexpect import *
import os
cwd = os.path.split(os.path.abspath(__file__))[0]

child = spawn("scp -P 1000 192.168.199.5:/temp/data {cwd}".format(cwd=cwd))
child.expect ("password")
child.sendline ("password-for-B ")
child.read()

在网上查到的一些资料中,一般都会少 child.read(), 这将使得,scp输入了正确密码,完成链接,但是服务器没有将拷贝的数据文件读取到服务器A上。

有关以上命令的解释见官方文档的说明。

参考

Pexpect

https://pexpect.readthedocs.io/en/stable/index.html

以上这篇python Pexpect 实现输密码 scp 拷贝的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

pygame学习笔记(2):画点的三种方法和动画实例

pygame学习笔记(2):画点的三种方法和动画实例

1、单个像素(画点) 利用pygame画点主要有三种方法: 方法一:画长宽为1个像素的正方形 复制代码 代码如下: import pygame,sys pygame.init() scr...

python实现简单神经网络算法

python实现简单神经网络算法

python实现简单神经网络算法,供大家参考,具体内容如下 python实现二层神经网络 包括输入层和输出层 import numpy as np #sigmoid funct...

python通过scapy获取局域网所有主机mac地址示例

python通过scapy获取局域网所有主机mac地址示例

python通过scapy获取局域网所有主机mac地址复制代码 代码如下:#!/usr/bin/env python# -*- coding: utf-8 -*-from scapy.a...

Ubuntu下安装PyV8

这几天需要在使用PyV8来进行python与javascript的交互。之前在window下安装过,直接使用的exe安装的,也没有遇到什么问题。 结果这次在Ubuntu安装遇到了不少坑-...

Python 专题三 字符串的基础知识

在Python中最重要的数据类型包括字符串、列表、元组和字典等.该篇主要讲述Python的字符串基础知识. 一.字符串基础 字符串指一有序的字符序列集合,用单引号、双引号、三重(单双均可...