`
youlong699
  • 浏览: 21837 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

【Shell 语法】expect 实现免登

阅读更多
expect 能够通过捕获脚本的输出,模拟控制台的输入,从而实现自动交互。
这里用这个命令是为了实现免登陆。

免登陆的原理是,通过ssh-keygen -t dsa 生成dsa密钥,然后将密钥传递到目标机器的~/.ssh/authorized_keys 文件,即可实现免登。

但是在传递密钥时依然是需要输入密码的,如果机器比较多,再一个一个的输入就比较麻烦了,私用expect拦截脚本输出,然后发送密码的方式比较爽。

expect 通过spawn 命令执行shell命令,然后产生的输出能够通过expect命令捕获,再根据捕获到的内容,通过send _string 将需要输入的内容模拟输入。
#! /usr/bin/expect
set timeout 5
set host [lindex $argv 0]  
set pwd [lindex $argv 1]
spawn scp /home/dilu.kxq/.ssh/id_dsa.pub ${host}:/home/dilu.kxq/
set done 1
while { $done } {
expect {
 -re ".*assword:"  { send "$pwd\r" }
 -re ".*yes" { send "yes\r" }
 -re ".*id_dsa.*" { send "\r" }
 -re ".*agin" { send "\r" }
 eof { set done 0 }
 }
}


这里是一个完成的,用于向远端机器发送文件的脚本。
注意, -re 是使用正则表达式匹配;
send "_string\r"里面的 \r 是从发送命令返回,如果没有 \r , 发送命令将不会返回。
分享到:
评论

相关推荐

    Linux Shell学习资料合集

    分别有以下这些内容的资料 Linux与unix shell编程指南 Bash参考手册 Expect中文教程 Expect简介和应用 Expect命令基本语法 高级Bash脚本编程指南 高级Shell脚本编程 Shell命令合集

    跟老男孩学Linux运维:Shell编程实战

    涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。《跟老男孩学Linux运维:Shell编程实战》第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试...

    跟老男孩学Linux运维:Shell编程实战 part3

    涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...

    跟老男孩学Linux运维:Shell编程实战.part2

    涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...

    跟老男孩学Linux运维:Shell编程实战.part1

    涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...

    跟老男孩学Linux运维:Shell编程实战 part5

    涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...

    跟老男孩学Linux运维:Shell编程实战 part1

    涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...

    跟老男孩学Linux运维:Shell编程实战 part4

    涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...

    跟老男孩学Linux运维:Shell编程实战 part2

    涉及的内容包括Shell编程的入门介绍、基础知识、运行原理、编程语法、编程习惯、变量知识以及变量的深入实践。第二部分为第5章~第8章,着重讲解变量的多种数值运算、条件测试与比较、if条件判断语句、Shell函数等...

    Makefile 语法分析

    Makefile 语法分析 第一部分 VERSION = 2# 给变量VERSION赋值 PATCHLEVEL = 6# 给变量PATCHLEVEL赋值 SUBLEVEL = 22# 给变量SUBLEVEL赋值 EXTRAVERSION = .6# 给变量EXTRAVERSION赋值 NAME = Holy Dancing Manatees...

    Tcl_TK编程权威指南pdf

    作为一种脚本语言,Tcl与其他的Unix shell语言,如Bourne Shell(sh)、C Shell(csh)、Korn Shell以及Perl类似。Shell程序可以让你执行其他的程序。它们提供了足够的可编程特性(变量、流程控制和过程),使你可以将现有...

    PHP5 完整官方 中文教程

    Expect — Expect Functions fam — File Alteration Monitor Functions FDF — Forms Data Format Functions Fileinfo — Fileinfo Functions filePro — filePro Functions Filesystem — Filesystem 文件系统函数...

    PHP5中文参考手册

    Expect — Expect Functions fam — File Alteration Monitor Functions FDF — Forms Data Format Functions Fileinfo — Fileinfo Functions filePro — filePro Functions Filesystem — Filesystem 文件系统函数...

    julia-1.1.0-win64

    其语法与其他科学计算语言相似。在许多情况下拥有能与编译型语言相媲美的性能。Julia 是个灵活的动态语言,适合科学和数值计算,性能可与传统静态类型语言媲美。 Introduction Scientific computing has ...

    PHP手册2007整合中文版

    Secure Shell2 Functions CLIX. Statistics Functions CLX. Stream Functions CLXI. String 字符串处理函数 CLXII. Subversion 函数 CLXIII. Shockwave Flash Functions CLXIV. Swish Functions CLXV. Sybase ...

    RED HAT LINUX 6大全

    本书全面系统地介绍了Red Hat Linux 6。全书共分为五个部分,包括35章和四个附录。第一部分为Red Hat Linux的介绍和安装;第二部分为服务配置;第三部分为系统管理;第四部分为Linux编程;第五部分为附录。...

    PHP5 开发手册 简体中文手册

    Secure Shell2 Functions CXLIV. Stream Functions CXLV. String 字符串处理函数 CXLVI. Shockwave Flash Functions CXLVII. Sybase Functions CXLVIII. TCP Wrappers Functions CXLIX. Tidy Functions CL. ...

    php帮助文档,php。chm,php必备的中文手册

    Secure Shell2 Functions CXLV. Stream Functions CXLVI. String 字符串处理函数 CXLVII. Shockwave Flash Functions CXLVIII. Sybase Functions CXLIX. TCP Wrappers Functions CL. Tidy Functions CLI. Tokenizer...

Global site tag (gtag.js) - Google Analytics