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.10.22
expect {
"*yes/no" { send "yes\r"; exp_continue }
"*password:" { send "$passwd\r" }
}
expect "*#"
send "cd /home/trunk\r"
expect "*#"
send "svn up\r"
expect "*#"
send "exit\r"
interact
expect eof
EOF

这样写的话,就方便得很多,一个脚本就包括完了.

(0)

相关推荐

  • 详解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的使用方法详解

    shell脚本无密码登录 expect的使用方法详解 今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了. 从网上查到使用expect可以,简单研究了一下,效果不错. 因为我的操作系统没有安装expect,所以直接"yum -y install expect",你可以根据你的操作系统安装expect,或者源码编译. 安装好之后就可以使用了,这里有几种方法: 一.单独写一个脚本 如 auto_scp

  • 用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脚本报错:"[: =: unary operator expected"解决办法

    shell脚本报错:"[: =: unary operator expected"解决办法 在匹配字符串相等时,我用了类似这样的语句: if [ $STATUS == "OK" ]; then echo "OK" fi 在运行时出现了 [: =: unary operator expected 的错误,就一直找不到原因,尝试了删除等号两侧的空格和括号里的空格都不管用,最后baidu了一下,才找到原因.把语句改成这样就不会出错了. if [[ $S

  • shell结合expect写的批量scp脚本工具

    在部署一个任务时,其中有一项必须的过程就是将一些文件,如安装包发送到大量的服务器上去.虽然已有宇哥的脚本可用:通过paramiko模块提供的ssh和scp功能编写的python脚本.但我到现在还在对python的恐惧之中(虽然已经在空闲时间努力去学习了),所以使用了shell和expect脚本结合的方式,写了这个批量scp的脚本工具. expect用于自动化地执行linux环境下的命令行交互任务,例如scp.ssh之类需要用户手动输入密码然后确认的任务.有了这个工具,定义在scp过程中可能遇到的

  • 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

  • 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

  • Linux 中常用的Rpm命令实例详解

    rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他发行版的采用.RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度. 语法 rpm(选项)(参数) 选项 -a:查询所有套件: -b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称: -c:只列出

  • Shell中set与shopt命令选项的含义和使用示例

    前言 本文主要给大家介绍了关于Shell中set与shopt命令选项含义与使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. set命令选项 set命令作用主要是显示系统中已经存在的shell变量,以及设置shell变量的新变量值.使用set更改shell特性时,符号"+"和"-"的作用分别是打开和关闭指定的模式.set命令不能够定义新的shell变量.如果要定义新的变量,可以使用declare命令以变量名=值的格式进行定义即可. 内置

  • php中如何执行linux命令详解

    前言 本文主要给大家介绍了关于在php中如何执行linux命令的相关内容,下面话不多说了,来一起看看详细的介绍吧 php如何执行某个命令 ,官方手册在这里 我们先从shell_exec来说 如何使用shell_exec在php里面执行shell命令 先来试一下,使用php执行某个shell命令,该命令是mkdir testdir. <?php $cmd = 'mkdir testdir'; shell_exec($cmd); 在这个php脚本执行之前,目录里面是这样子的: 执行之后,目录里面是如

  • linux shell中“.” 和 “./”执行的区别详解

    目前注意到的区别主要在于环境变量的作用域上: 1. 如果使用" ./ " 执行,可以理解为程序运行在一个全新的shell中,不继承当前shell的环境变量的值, 同时若在程序中改变了当前shell中的环境变量(不使用export),则当前shell的环境变量值不变. 2. 如果使用" . "执行,则程序继承当前shell中的环境变量,同时,若在程序中改变了当前shell中的环境变量(不使用export),则当前shell中该环境变量的值也会改变 另外一个区别点在于,

  • linux shell中实现循环日期的实例代码

    下面通过一段代码给大家介绍linux shell中实现循环日期,具体代码如下所示: #!/usr/bin/env bash start_date="20180726" end_date="20180830" while [ "$start_date" -le "$end_date" ]; do stat_date=`date -d "$start_date" +%Y-%m-%d` echo $stat_da

  • java中如何执行xshell命令

    目录 java执行xshell命令 实例 Xshell启动java项目脚本(标本参考) 项目启动脚本 java执行xshell命令 实例 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Lin { public static void main(String[] args) { Process process =null; //chm

  • Android中执行java命令的方法及java代码执行并解析shell命令

    android中执行java命令的方法大家都晓得吗,下面一段内容给大家带来了具体解析. android的程序基于java开发,当我们接上调试器,执行adb shell,就可以执行linux命令,但是却并不能执行java命令. 那么在android的shell中是否就不能执行java程序了呢. 答案是否定的.我们可以通过app_process来执行java程序. 写一个hello world吧,就是刚开始学java的时候 写得那个hello world,这次要在android上运行. 用记事本新建

  • Shell中的命令别名、命令历史和命令替换的方法

    命令别名 可以使用 alias 命令查看和修改命令别名. 下面是一个查看系统中命令别名的示例: $ alias alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' al

  • python脚本执行CMD命令并返回结果的例子

    最近写脚本的时想要用python直接在脚本中去执行cmd命令,并且将返回值打印出来供下面调用,所以特意查了下,发现主要有一下几种方式来实现,很简单: 就拿执行adb, adb shell, adb devices 举例 1.第一种方法 os 模块的 os.sysytem() import os os.system('adb) 执行括号中系统命令,没有返回值 2.第二种方法:os模块的 os.popen() if __name__=='__main__': import os a = os.pop

随机推荐