在linux操作系统下,使用脚本自动化,一般由两种方案,方案一:telnet+ftp,方案二:ssh+scp+expect。

以下主要使用ssh+scp+expect为例进行说明使用方式。

第一步:安装expect:yum -y install expect

第二步:验证,执行expect是否正确

第三步:编写脚本

ssh_exec(){
ip=$
user=$
passwd=$
cmdstr=$
/usr/bin/expect <<EOF
set time
spawn ssh $user@$
expect {
"*yes/no" { send "yes\r"; exp_continue}
"*password:" {send "$passwd\r"}
}
expect "*#"
expect "*#"
send "$cmdstr\r"
expect "*#"
send "exit\r"
expect eof
EOF
}
function scp_get () {
local ip=$
local user=$
local passwd=$
local src=$
local dst=$ [ -z "$ip" -o -z "$passwd" ] && return
/usr/bin/expect << EOF
proc remote_exec {ip passwd src dst} {
spawn scp \$user@\$ip:\$src \$dst
exp_internal
expect {
"yes/no" { send "yes\\r";exp_continue}
"*password:" {send "\$passwd\\r"}
}
expect eof
} remote_exec "$ip" "$user" "$passwd" "$src" "$dst"
EOF
}
#从本地服务器复制到远程服务器
function scp_put () {
local ip=$
local user=$
local passwd=$
local localfile=$
local dst=$ [ -z "$ip" -o -z "$passwd" ] && return
/usr/bin/expect << EOF
proc remote_exec {ip passwd localfile dst} {
spawn scp \$localfile \$user@\$ip:\$dst
exp_internal
expect {
"yes/no" { send "yes\\r";exp_continue}
"*password:" {send "\$passwd\\r"}
}
expect eof
} remote_exec "$ip" "$user" "$passwd" "$localfile" "$dst"
EOF
}
ssh_exec 192.168.1.2 root 'df -h'
scp_get 192.168.1.2 root '/root/test.txt' '/opt/'

代码说明:

第四步:对脚本授权,执行:chmod -R 755 script.sh

第五步:脚本执行,./script.sh  (备注:shell+expect脚本,不能使用sh script.sh执行,只能采用./script.sh执行)

shell与expect结合使用的更多相关文章

  1. Shell结合Expect实现自动输入密码

    Shell结合Expect自动输入密码示例 #!/bin/bash cd /data/live /usr/bin/expect <<-EOF spawn git clone "s ...

  2. shell中expect介绍

    expect介绍 借助Expect处理交互的命令,可以将交互 过程如:ssh登录,ftp登录等写在一个脚本上,使之自动化完成.尤其适用于需 要对多台服务器执行相同操作的环境中,可以大大提高系统管理人员 ...

  3. Linux命令(27):shell 结合expect,多服务器批量分发数据

    shell 结合expect 写的批量scp脚本工具 except安装:http://www.cnblogs.com/lovychen/p/6525623.html expect用于自动化地执行lin ...

  4. shell 套用expect

    先用if 判断expect有没有安装 没有就yum install expect #!/bin/bash passwd='123456' /usr/bin/expect <<-EOF se ...

  5. Ansible 命令相关模块command, shell, raw, expect, script, telnet[转]

    本文主要介绍Ansible的几个命令模块,包括: command - 在远程节点上执行命令 shell - 让远程主机在shell进程下执行命令 script - 将本地script传送到远程主机之后 ...

  6. shell中expect免交互

    expect前言观察ssh登录的交互现象有些程序难以避免的需要交互.你该如何解决脚本与程序的交互问题?名词解释期待, 预期, 盼望, 预料,料想, 指望, 希望, 要求,想, 认为一.概述 我们通过S ...

  7. Shell 信号处理 & Expect 免交互

    监控脚本项目 信号处理 1 什么是信号 由键盘组合键或者 kill 命令发出操作称之为信号 信号是发送给进程的,进程在收到信号后会作出默认的响应 2 为何要在进程内处理信号 进程在收到信号后会有默认的 ...

  8. shell脚本 expect 实现自动登陆

    vi auto_ssh.exp #!/usr/bin/expect   set ipaddress "123.227.159.159" set passwd "你的密码& ...

  9. Shell之expect的测试

    测试:./sshLogin.sh Slave1 caipeichao 1qaz@WSX hadoop lk198981 HadoopCluster #!/usr/bin/expect -f #auto ...

随机推荐

  1. day103 跨域请求 与频率访问限制.

    目录 一.跨域请求 二.频率访问限制 一 .同一个域下的ajax请求访问  url文件 from django.conf.urls import url from django.contrib imp ...

  2. Jmeter-正则表达式提取器获取token-小实例

    步骤一:在需要获取token的接口上,添加正则表达式提取器 说明: (1) Apply to:应用范围 Main sample and sub-samples:匹配范围包括当前父取样器并覆盖至子取样器 ...

  3. iOS开发总结--三方平台开发之分享

    1.前言 在公司参与了多个应用三方平台的开发,涉及微信.微博.QQ.Facebook.meetup等,总结一下一般的接入三方平台SDK方法. 2.接入三方SDK 任何应用要接入三方平台,都需要在该平台 ...

  4. linux安装应用程序

    实验:为 Linux 主机安装应用程序   环境:vmware workstation 14  . redhad-server-6.4 需求:1.使用 RPM 包的方式安装 Mozilla Firef ...

  5. Numpy 数组的切片操作

    实例+解释如下(表格):关键是要明白python中数组的下标体系.一套从左往右,一套从右往左. 1 import numpy as np 2 import sys 3 4 def main(): 5 ...

  6. 获取设备信息——获取客户端ip地址和mac地址

    1.获取本地IP(有可能是 内网IP,192.168.xxx.xxx) /** * 获取本地IP * * @return */ public static String getLocalIpAddre ...

  7. linux文件映射到windows(方便用虚拟机搭建linux服务器,用本地windows代码编辑)

    1,安装docker: https://docs.docker.com/install/linux/docker-ce/centos/ 2,linux上创建好需要共享的目录 /data/share(可 ...

  8. BugFree3.0.4Linux环境安装指南

    bugfree安装的前提是配置LAMP(apache+mysql+php),我安装的linux系统是centos6.0 一.安装Apache服务器 1.安装apache yum install htt ...

  9. Android4.0 Launcher 源码分析2——Launcher内容加载绑定详细过程

    Launcher在应用启动的时候,需要加载AppWidget,shortcut等内容项,通过调用LauncherModel.startLoader(),开始加载的工作.launcherModel中加载 ...

  10. 命令行创建Android应用,命令行生成签名文件,命令行查看签名信息,对APK包签名并编译运行

    一.命令行创建Android应用 android create project -n HelloWorld -t android-22 -p HelloWorld1 -k org.crazyit.he ...