需求:现在有一百多台的机器,都是使用用户名密码登录做一些运维操作,不想因为密码变更造成管理上的一些麻烦,所以改为通过密钥文件的方式进行登录,需要提前做一些准备工作,把准备好的。SSH文件复制到各机器的特定用户目录下。

操作:需要使用到EXPECT或者SSHPASS。这里选择EXPECT为例:

保存为 myscp.sh,替换为真正的密码,使用的时候传递目标IP参数。

#!/bin/bash
expect -c "
set timeout 1200;
spawn /usr/bin/scp -r /home/gdmpmon/.ssh $1:/home/gdmpmon
expect {
\"*yes/no*\"{send \"yes\r\"; exp_continue}
\"*password*\"{send \"password"\r\";}
}
expect eof;"

实现类似功能的PYTHON代码如下:

#!/usr/bin/python
import pexpect
import sys
import time now = time.strftime("%m%d%y_%I%M%S%p", time.localtime())
print now foo = pexpect.spawn('scp -r /path/to/.ssh %s:/path/to//' % sys.argv[1])
foo.expect('.ssword:*')
foo.sendline('password')
foo.expect('.*(yes/no).*')
foo.sendLine('yes')
foo.expect(pexpect.EOF) finish = time.strftime("%m%d%y_%I%M%S%p", time.localtime())
print finish

使用expect scp避免直接输密码的更多相关文章

  1. Python不同电脑之间传输文件实现类似scp功能不输密码

    SCP vs SFTP 通过paramiko还可以传输文件,如何通过paramiko在计算机之间传输文件,通过阅读官方文档,发现有如下两种方式: sftp = paramiko.SFTPClient. ...

  2. Live帐号登陆win8系统不用输密码的方法

    win 8 系统旨在让大家日常的操作更加方便与快捷.因此,今天,小编将与大家分享的是如何利用Live帐号登陆win8系统,而不用输密码的方法.具体的步骤如下文所述. 按win+R打开运行输入cmd(在 ...

  3. linux环境设置:使ftp不输密码

    # cd ~; # vi .netrc; Add beloew words, 可以追加多个账户: machine yourservername login yourname password your ...

  4. TortoiseGit push免输密码

    (ฅ>ω<*ฅ) 噫又好了~ TortoiseGit push免输密码的方法 – 晨旭的博客~https://www.chenxublog.com/2016/03/04/tortoiseg ...

  5. Android开发---基本UI组件1:自动拨电话,自动上网,输入框不换行、只输数字、只输文本、只输密码

    1.activity_main.xml 描述:构建一个按钮 <?xml version="1.0" encoding="utf-8"?> <L ...

  6. expect+scp传输文件发现文件丢失

    背景 使用expect+scp去跨机器传输文件,(别问我为什么,因为公司的测试机器都是通过堡垒机的,无法绕开堡垒机,只能暂时使用这个方法了),结果发现从A传递到B的tar.gz文件大小不一致了的,当时 ...

  7. 从此sudo不再输密码

    #sudo visudo 最后一次输入密码. 在最后一行加入: xxx ALL=NOPASSWD: ALL xxx即为你当前使用的用户名,Ctrl+X,保存退出. 从此告别每次都要输密码的时代.

  8. 【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)

    通常,可以用scp完成两台主机间的文件传输任务,但在主机间未建立信任关系的情况下,scp每次都需要输入密码,用起来感觉不是很方便,之前这篇笔记介绍过不用输入密码执行脚本或传输文件的方法,但对于一些临时 ...

  9. ssh 免密码登录(设置后仍需输密码的原因及解决方法)

    按操作步骤操作不行的最可能原因是:文件权限,不论是a机还是要访问的b机的文件的权限都要改成对应的700,600:必须严格是这个权限,否则会出现设置免密fail的情况. serverA 免密码登录到 s ...

随机推荐

  1. clientTarget与用户代理别名

    将特定用户代理的别名添加到用户代理别名的内部集合中. 来自 <https://msdn.microsoft.com/zh-cn/library/6379d90d(v=vs.110).aspx&g ...

  2. DOM官方定义

    DOM Document Object Model 文档对象模型 DOM的官方定义:W3C的DOM,可以使程序或者脚本(JS或AS\JScript),动态的访问或者操作文档的内容.结构.样式. DOM ...

  3. C++_系列自学课程_第_5_课_vector容器_《C++ Primer 第四版》

    再一次遇到 vector 这个单词; 每一次见到这个单词都感觉这个单词非常的 "高大上"; 数字遇到vector马上就可以360度旋转: 当 "电" 遇到vec ...

  4. 使用MyEclipse 开发struts2框架结构详细教程——以登录为例

    1.首先建立Web Project,名称为:struts2 ,然后选择Java EE6.0,点击Finish. 2.右击“struts”选择MyEclipse->Add Struts Capab ...

  5. 新建 .NET Core 项目 -- Hello World!

    一.开发工具安装 1.可选模式一 (不推荐,此为Windows开发方式) 安装 Visual Studio 2015 / Visual Studio 2015 Update 3 / .NET Core ...

  6. Thinkcmf 二次开发

    一.   创建模板 demo 1 Tpl下创建demo文件-----后台启用新的模板 (网站信息--模板方案) 2 在模板在tpl/demo目录下创建Portal目录,然后在Portal目录下创建in ...

  7. TinyMCE添加图片 路径自动处理成相对路径

    默认情况下会自动转换你的图片路径如: 转换: /path/name.jpg 为 ../path/name.jpg 带有域名的路径也会被转换为相对路径. 需要修改一个设置convert_urls,官方文 ...

  8. AMD and CMD are dead之KMD.js版本0.0.2发布

    更新 正式从UglifyJS切换至UglifyJS2 增加依赖可视化功能 压缩代码更加方便 统一风格:如main的class名也不能省略 优化了kmdjs管道 修复了无数bug 通过src开启debu ...

  9. LruCache缓存

    LruCache通常用于实现内存缓存,采用的缓存算法是LRU(Least Recently Used)即近期最少使用算法,其核心思想是:当缓存满的时候,会优先淘汰那些近期最少使用的缓存对象. 1.Lr ...

  10. mac osx get postgresql path

    sudo lsof -i :5433 ps xuwww -p 91 sudo port install py27-psycopg2