shell脚本通过expect实现自动单边无密登录功能
最近项目需要实现单边无密登录,去网上搜索了下相关文章,实践之后发现几乎都不能用。于是结合expect的使用方法自行写了一个,通过验证可用。现在总结在这供需要的朋友参考。
代码如下:
EXPECT=/usr/bin/expect
$EXPECT <<EOF spawn ssh-keygen -t rsa expect "*ssh/id_rsa*" { send -- "\r" expect "*for no passphrase*" send -- "\r" expect "*passphrase again*" send -- "\r" exp_continue } EOF iplist=`cat /root/ip.list` for ip in $iplist do $EXPECT <<EOF spawn ssh-copy-id root@$ip expect "*(yes/no)?*" { send -- "yes\r" expect "*?assword:*" send -- "$PASSWD\r" } "*?assword:*" { send -- "$PASSWD\r" exp_continue } EOF done
以上所述是小编给大家介绍的shell脚本通过expect实现自动单边无密登录,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
相关推荐
-
shell中嵌套执行expect命令实例
一直都想把expect的操作写到bash脚本里,这样就不用我再写两个脚本来执行了,搞了一下午终于有点小成就,给大家看看吧. 系统:centos 5.x 1.先安装expect 复制代码 代码如下: yum -y install expect 2.脚本内容: 复制代码 代码如下: cat auto_svn.sh #!/bin/bash passwd='123456' /usr/bin/expect <<-EOF set time 30 spawn ssh -p18330 root@192.168
-
用expect实现的自动登录到多台服务器的shell脚本
复制代码 代码如下: #!/usr/bin/expect -fset ipaddress [lindex $argv 0]set passwd [lindex $argv 1]set timeout 30spawn ssh root@$ipaddress#expect "yes/no"#send "yesr"expect "password:"send "$passwdr"expect "]*"send &
-
shell脚本无密码登录 expect的使用方法详解
shell脚本无密码登录 expect的使用方法详解 今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了. 从网上查到使用expect可以,简单研究了一下,效果不错. 因为我的操作系统没有安装expect,所以直接"yum -y install expect",你可以根据你的操作系统安装expect,或者源码编译. 安装好之后就可以使用了,这里有几种方法: 一.单独写一个脚本 如 auto_scp
-
详解Linux使用shell+expect远程登录主机
详解Linux使用shell+expect远程登录主机 最近使用Ubuntu系统想远程登录自己的vps主机,但是感觉自带的远程登录软件不太好使.于是乎想着怎么使用shell脚本来登录,于是Google之后整理了一下,记录一下,方便以后用到. 1.准备工作:安装expect for Ubuntu sudo apt-get update sudo apt-get install expect for Centos yum install expect 2.新建脚本粘贴以下内容 #!/usr/bin/
-
shell结合expect写的批量scp脚本工具
在部署一个任务时,其中有一项必须的过程就是将一些文件,如安装包发送到大量的服务器上去.虽然已有宇哥的脚本可用:通过paramiko模块提供的ssh和scp功能编写的python脚本.但我到现在还在对python的恐惧之中(虽然已经在空闲时间努力去学习了),所以使用了shell和expect脚本结合的方式,写了这个批量scp的脚本工具. expect用于自动化地执行linux环境下的命令行交互任务,例如scp.ssh之类需要用户手动输入密码然后确认的任务.有了这个工具,定义在scp过程中可能遇到的
-
shell脚本报错:"[: =: unary operator expected"解决办法
shell脚本报错:"[: =: unary operator expected"解决办法 在匹配字符串相等时,我用了类似这样的语句: if [ $STATUS == "OK" ]; then echo "OK" fi 在运行时出现了 [: =: unary operator expected 的错误,就一直找不到原因,尝试了删除等号两侧的空格和括号里的空格都不管用,最后baidu了一下,才找到原因.把语句改成这样就不会出错了. if [[ $S
-
shell脚本通过expect实现自动单边无密登录功能
最近项目需要实现单边无密登录,去网上搜索了下相关文章,实践之后发现几乎都不能用.于是结合expect的使用方法自行写了一个,通过验证可用.现在总结在这供需要的朋友参考. 代码如下: EXPECT=/usr/bin/expect $EXPECT <<EOF spawn ssh-keygen -t rsa expect "*ssh/id_rsa*" { send -- "\r" expect "*for no passphrase*" s
-
Android 使用Shell脚本截屏并自动传到电脑上
Android设备用久了,截屏是个麻烦事.更麻烦的是通过qq传到电脑上,倒腾半天.其实用adb命令就可以截屏,然后写个pull的语句就可以拉到电脑上了.文件名为capture.sh, 内容如下: #! /bin/bash adb shell screencap -p /sdcard/test.png #adb pull /sdcard/test.png ~/Desktop/test.png dir=~/Desktop/ curr=`date "+%Y-%m-%d %H:%M:%S"`
-
AJAX如何实现无刷新登录功能
最近学习了如何实现无刷新登录,大体的效果如下(界面比较丑,请自行忽略....): 点击登录按钮时弹出登录窗口,输入正确的用户名密码后点击登录则登录窗口关闭,状态改为当前用户名. 第一步: 首先弹出窗口使用的是jquery-ui中的控件,第一步要学会如何使用. 打开解压后的jquery-UI下的development-bundle->demos,找到index.html,选择dialog下的model dialog,右键查看源码,观察如何使用该控件,找到一句关键代码:$("#dialog-m
-
Shell脚本之Expect免交互的实现
Expext概述 Expect是建立在tcl基础上的一个工具,Expect是用来自动化控制和测试的工具.主要解决shell脚本中不可交互的问题.有助于大规模的系统运维工作.在日常的运维与开发中,常常需要运城登录到服务器,然而登录的过程却是个需要交互的过程,可能会要输入yes/no等信息,使用Expect脚本即可实现免交互操作. Expect安装 挂载光盘 制作本地YUM源 执行安装命令 yum install expect -y 基本命令 send 向进程发送字符串,用于模拟用户的输入,该命令不
-
shell脚本实现mysql定时备份、删除、恢复功能
mysql备份脚本: 脚本实现:按照数据库名称,全量备份mysql数据库并定期删除 #!/bin/bash #全备方式,一般在从机上执行,适用于小中型mysql数据库 #删除15天以前备份 #作者:lcm_linux #时间:2019.08.06 source ~/.bash_profile #加载用户环境变量 set -o nounset #引用未初始化变量时退出 set -o errexit #执行shell命令遇到错误时退出 #备份用户---需要在mysql中提前创建并授权 #GRANT
-
利用Shell脚本实现远程MySQL自动查询
下面这个脚本是一个简单用来执行远程数据库查询的命令,相信大家都能看得懂,这对于有些需要每天自动检查数据库或是执行某些语句的兄弟,是很有帮助的,只要稍加修改就可以 复制代码 代码如下: #!/bin/shHOST=192.168.5.40USER=abcPASS=123456QUERY=`mysql -h$HOST -u$USER -p$PASS << EOFuse testdb;select * from person where name='LiMing';exitEOF`echo $QUE
-
Shell脚本实现检查服务器安全状态(用户、登录IP、防火墙检查)
说明:大家平时对Linux服务器安全主要是对系统用户的检查,登陆服务器IP检查,以及防火墙状态检查! 1.需要把正确系统用户名存储在/root/liu_shell/local_user.txt文件中,然后进行比较! 2.对登陆IP判断是不是以192.168.1和192.168.2开头的IP为正常IP! 3.判断iptables状态! 复制代码 代码如下: #!/usr/bin/python #coding=utf-8 import sys,os,re,socket host=str(socket
-
shell脚本批量复制及执行命令的示例详解
平时在处理一个或几个机器运行环境时,一个机器一个机器处理也能接受,但是如果是一批机器,几十或几百台,要是一台一台去安装环境,光是输入同一的命令,估计你自己都想吐,所有聪明的人会想一些偷懒的办法,确实可以找到一些省时省力的方法,比如写一个批量处理shell脚本,这几天在处理一批(八九十台)机器环境,找了一些批量处理的脚本,包括批量传输(scp)文件到多台机器上.批量执行命令到多台机器.还有需要交互的命令,下面记录一些这些命令: 机器IP文件:ip.txt 192.168.10.201 192.16
-
Linux Shell脚本实现检测tomcat
Linux Shell脚本检测tomcat并自动重启 后台运行命令 sh xxx.sh & 查看后台任务:jobs 召唤到前台:fg jobs编号 可以删掉while循环的代码放到crontab里面定时执行,可以将脚本直接后台运行, #!/bin/bash while [ true ] do url="http://www.jb51.net/"; httpOK=`curl --connect-timeout 10 -m 60 --head --silent $url | awk
-
隐藏shell脚本内容的工具 shc详解
目录 简介 安装 常用选项 编译脚本 实例1 实例2 设置过期时间 如何引用二进制脚本 安全性 小结 从事 Linux 开发的同学,经常需要编写 shell 脚本,有时脚本中会涉及到一些敏感内容,比如一些 IP 地址,用户名以及密码等,或者脚本中有一些关键的代码, 所有这些内容你都不想别人阅读或者修改,更进一步,你希望对脚本设置过期时间,超过指定时间时间之后,脚本就无法使用 在不改变脚本内容.功能以及执行方式的情况下,有没有办法实现上面的需求呢? 答案是:有的, 在Linux下,我们可以使用 s
随机推荐
- php操作mysql获取select 结果的几种方法
- 关于使用axios的一些心得技巧分享
- javascript标签在页面中的位置探讨
- LINQ重写博客垃圾图片回收算法
- PHP基于新浪IP库获取IP详细地址的方法
- 浅谈PHP中类和对象的相关函数
- JS匿名函数实例分析
- mysql 编码设置命令
- JS的数组迭代方法
- Lua极简入门指南(一):基础知识篇
- python魔法方法-属性转换和类的表示详解
- 改进版:在select中添加、修改、删除option元素
- mouseover时显示滚动字幕 特效
- 无敌命令结束Windows系统进程
- PHP获取栏目的所有子级和孙级栏目的ID号示例
- Android自定义仿微信PopupWindow效果
- IOS实现自定义布局瀑布流
- 几个常用的ASP函数
- Vue的移动端多图上传插件vue-easy-uploader的示例代码
- 浅谈Windows平台上Docker安装与使用