新系统添加sshkey/pexpect基本使用
Ansible密码认证
//配置Inventory
[db]
10.10.10.12
10.10.10.162 [db:vars] #给db组下的主机设置变量
ansible_ssh_user="root"
ansible_ssh_pass='' //调用ansible的authorized_key模块(可参考https://www.cnblogs.com/FRESHMANS/p/8119224.html 里的authoirzed_key模块) ansible db -m authorized_key -a "user=root key={{ lookup('file', '/root/.ssh/id_rsa.pub') }} path=/root/.ssh/authorized_keys manage_dir=no" //copy模块
ansible db -m copy -a "src=/root/.ssh/id_rsa.pub dest=/tmp/id_rsa.pub"
ansible db -m shell -a "cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys"
ssh-copy-id(需要手动输入密码)
ssh-keygen -t rsa
ssh-copy-id 192.168.132.132
ssh-copy-id 192.168.132.133
ssh-copy-id 192.168.132.131 测试
ssh -i /root/.ssh/id_rsa root@x.x.x.x
Paramiko
略
Pexpect
安装
//安装依赖 wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz
tar xfvz tcl8.4.11-src.tar.gz
cd tcl8.4.11/unix
./configure --prefix=/usr/tcl --enable-shared
make
make install //安装pexpect
wget https://jaist.dl.sourceforge.net/project/expect/Expect/5.45/expect5.45.tar.gz
tar xzvf expect5..tar.gz
cd expect5.
./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4.11/generic
make
make install
ln -s /usr/tcl/bin/expect /usr/expect/bin/expect
测试脚本
示例: #!/usr/bin/expect -f
set ip [lindex $argv ] #设置远程主机ip
set USER [linux $argv 1] #设置要连接的远程主机用户信息
set password [lindex $argv ] #设置远程主机密码信息
set CMD [linux argv 3] #设置要执行的命令
set timeout
spawn ssh $user@$ip $cmd #开启ssh连接并在远程主机执行命令
expect {
"*yes/no" { send "yes\r"; exp_continue}
"*password:" { send "$password\r" }
}
interact //检测基本登录并停留在远程主机shell cat ssh.exp #!/usr/bin/expect
set timeout 30
spawn scp /root/.ssh/id_rsa.pub root@10.10.10.162:/root #直接往远程主机上拷贝文件,
spawn ssh-copy-id 10.10.10.162 #这里可以用ssh-copy-id做ssh免秘钥认证
spawn ssh -l root 10.10.10.11 #连接远程主机
expect "password:"
send "hzcf@2017\r"
interact 执行
expect ssh.exp //自定义连接主机 cat test_ssh.exp
#!/usr/bin/expect -f
set ip [lindex $argv ]
set password [lindex $argv ]
set timeout
spawn ssh root@$ip
expect {
"*yes/no" { send "yes\r"; exp_continue}
"*password:" { send "$password\r" }
}
interact expect test_ssh.exp ip password
其他示例
//更改密码 #!/bin/bash
USER=mynameuser
PASS=oldpassword
NPASS=newpassword
expect << EOF
spawn passwd
expect "Changing password for ${USER}."
send "${PASS}\r"
expect "Enter new UNIX password:"
send "${NPASS}\r"
expect "Retype new UNIX password:"
send "${NPASS}\r"
expect eof;
EOF //文件拷贝
#!/usr/bin/expect
set timeout
set host [lindex $argv ]
set username [lindex $argv ]
set password [lindex $argv ]
set src_file [lindex $argv ]
set dest_file [lindex $argv ]
spawn scp $src_file $username@$host:$dest_file
expect {
"(yes/no)?"
{
send "yes\n"
expect "*assword:" { send "$password\n"}
}
"*assword:"
{
send "$password\n"
}
}
expect "100%"
expect eof
新系统添加sshkey/pexpect基本使用的更多相关文章
- 【转】服务器添加新用户用ssh-key 登录,并禁用root用户 密码登录
[转]Linux最高权限用户root,默认可以直接登录sshd.为了提高服务器的安全度,需要对它进行禁止,使得攻击者无法通过暴力破解来获取root权限. ps: 以下内容皆非原创,只是个人的一个实践 ...
- Android6.0系统添加那些新特性
北京时间9月30日凌晨在美国旧金山举行2015年秋季新品公布会.在公布会上代号为"Marshmallow(棉花糖)"的安卓6.0系统正式推出.新系统的总体设计风格依旧保持扁 ...
- ubuntu系统新用户添加
大概是4个步骤吧,是用脚本实现的,这里我列一下关键点 sudo useradd -m userYouWantAdd sudo passwd userYouWantAdd sudo usermod -a ...
- 使用GitHub(一):添加SSHkey
使用GitHub(一):添加SSHkey 本文简单介绍使用GitHub对代码进行版本控制,包括添加SSHkey.配置Git.使用Git创建版本库并在GitHub上进行管理,主要目的是对学习内容进行总结 ...
- 配置新系统(Win7 x64)
新装了一个Win7 x64系统.总结了一些系统配置需要注意的地方. 1. C盘空间 发现C盘被用去了50G的空间,在什么软件都没装的情况下,被用去这么多,感到不可思议. 打开控制面板->文件夹选 ...
- 嵌入式linux驱动开发之给linux系统添加温度传感器模块
忙了几天,终于可以让ds18b20在自己的开发板的linux系统上跑了!虽然ds18b20不是什么新鲜玩意,但是想想知己可以给linux系统添加模块了还是有点小鸡冻呢! 虽然说现在硬件的资源非常丰富而 ...
- 熊猫猪新系统測试之三:iOS 8.0.2
本来本猫要等到8.1版本号出来后再做測试的,结果等来等去就是迟迟不推送更新呀!说好10月20号的iOS 8.1呢?为了一鼓作气写完,就先不等了.先拿手头的iOS 8.0.2系统做一下測试吧! 8.x系 ...
- 熊猫猪新系统测试之二:Mac OS X 10.10 优胜美地
在第一篇windows 10技术预览版测试之后,本猫为大家呈现另一个刚刚才更新的mac操作系统:"优胜美地".苹果同样一改以猫科动物为代号命名的传统,在10.9的Mavericks ...
- Sun Solairs系统添加裸设备
Sun Solaris系统添加裸设备对表空间进行扩容的大体操作步骤. 1.查看当前卷组信息 --查看当前卷组信息#vxdg list --查看当前卷组中物理磁盘的使用情况#vxdg free |gre ...
随机推荐
- 海量数据,大数据处理技术--【Hbase】
- @Resource 与 @Service注解的区别
pring中什么时候用@Resource,什么时候用@service当你需要定义某个类为一个bean,则在这个类的类名前一行使用@Service("XXX"),就相当于讲这个类定义 ...
- linux 命令基础大全
pwd:显示当前路径 cd :切换目录 用法:cd cd ../ 切换到上级目录 cd / 切换到根目录 cd ~ (或只有cd )切换到当前用户主目录(home底下以用户名命名的文件夹) /r ...
- Ecto中的changeset,schema,struct,map
概要 schema changeset struct map 总结 概要 Ecto 中, 对数据库的操作中经常用到 4 个类型: schema changeset struct map 在 Ecto ...
- Jenkins-2.154 windows平台部署 FAQ
部署过程中遇到的问题及解决办法如下 1.如何将 Jenkins 汉化? 1.进入系统管理 -> 插件管理 -> 选中“可选插件” 标签 -> 在过滤条件中输入“local”进行查找插 ...
- 【css】图片垂直水平居中
一.已知宽高的图片实现垂直水平居中 1.借助margin-top负边距实现垂直居中 <!DOCTYPE html> <html> <head> <meta c ...
- redis对sorted_set进行的相关操作
redis对sorted_set(有序集合)类型操作的相关命令以及如何在python使用这些命令 redis对sorted_set(有序集合)类型操作的命令: 命令 语法 概述 返回值 Redis Z ...
- 如何注册一个google账号
注册过google账号的人都知道,在注册的过程中会需要短信验证. 可我大天朝偏偏连这个都锁了,导致根本验证不了. 所以,经过网上方法的不断尝试,排除了很多的方法:例如使用qq邮箱注册等,现在已经不能用 ...
- EntityFramework Core进行读写分离最佳实践方式,了解一下(二)?
前言 写过上一篇关于EF Core中读写分离最佳实践方式后,虽然在一定程度上改善了问题,但是在评论中有的指出更换到从数据库,那么接下来要进行插入此时又要切换到主数据库,同时有的指出是否可以进行底层无感 ...
- jeecg入门操作—一对多表单开发
一.创建主表 创建订单主表(torder_main) 二.创建附表客户信息表(torder_customer) 设置附表页面外键不可见 设置附表外键 三.创建附表机票 信息表(torder_tic ...