文档章节

usr/bin/expect方式免密码登录和发送文件脚本

林小宝
 林小宝
发布于 2017/09/08 13:51
字数 183
阅读 11
收藏 0

ssh 登录

#!/usr/bin/expect  
set timeout 20  
  
if { [llength $argv] < 3} {  
    puts "Usage:"  
    puts "remote_host password cmd"  
    exit 1  
}  
  
set remote_host [lindex $argv 0]  
set password [lindex $argv 1]  
set cmd [lindex $argv 2]
  
set passwderror 0  
  
spawn ssh $remote_host  
  
expect {  
    "*assword:*" {  
        if { $passwderror == 1 } {  
        	puts "password is error"  
        	exit 2  
        }  
        set timeout 1000  
        set passwderror 1  
        send "$password\r"  
        exp_continue  
    }  
    "*es/no)?*" {  
        send "yes\r"  
        exp_continue  
    }  
    timeout {  
        puts "connect is timeout"  
        exit 3  
    }  
}

expect  "$*" { send "$cmd\r" }
send "exit\r"
expect eof

scp

#!/usr/bin/expect  
set timeout 20  
  
if { [llength $argv] < 3} {  
    puts "Usage:"  
    puts "$argv0 local_file remote_path password"  
    exit 1  
}  
  
set local_file [lindex $argv 0]  
set remote_path [lindex $argv 1]  
set password [lindex $argv 2]
  
set passwderror 0  
  
spawn scp $local_file $remote_path  
  
expect {  
    "*assword:*" {  
        if { $passwderror == 1 } {  
        puts "password is error"  
        exit 2  
        }  
        set timeout 1000  
        set passwderror 1  
        send "$password\r"  
        exp_continue  
    }  
    "*es/no)?*" {  
        send "yes\r"  
        exp_continue  
    }  
    timeout {  
        puts "connect is timeout"  
        exit 3  
    }  
}

© 著作权归作者所有

共有 人打赏支持
林小宝
粉丝 4
博文 27
码字总数 10798
作品 2
深圳
MacBook Pro 下 Alias + ssh免密登录 =>形成脚本提高效率

① MacBook Pro 下Bash Shell and Zsh 利用Alias 简化命令 ------ 直接上菜 ② MacBook Pro 下Bash Shell 实现ssh免密登录 可以看到两个密钥文件:idrsa(私钥) idrsa.pub(公钥) 公钥是加...

杨春炼
2016/05/25
743
4
linux 远程自动化部署

#!/usr/bin/expect -f set timeout 60set f [open ./ip r]while { [gets $f line ] >=0 } { set ip [lindex $line 0] #echo "开始启动$ip的服务" spawn scp push.war jeeker@$ip:/home/jeeke......

kongjun
2016/01/08
698
2
expect实现命令行简单交互

在服务器开发中,有时候需要自动同步另一个服务器的一个文件,这时候就需要通过scp来把文件复制到当前服务器目录下,如: scp需要认证用户名和密码,可以通过在对方服务器通过密钥对来验证不...

lxfeng
2016/06/05
61
0
自动化交互程序Expect应用实践

Expect自动化交互程序应用实践 1.Expect简介 1.1什么是Expect Expect第一个用来实现自动化交互功能的软件套件,是基于TCL的脚本编程工具语言,方便学习,功能强大。 1.2为什么要使用Expect ...

tom_tuwei
07/12
0
0
企业实战脚本案例3:批量管理自动化运维100台小规模服务器

批量管理自动化运维100台小规模服务器 目录 1.脚本背景介绍 2.脚本技术需求分析 2.1 SSH免登陆认证 2.2 Expect实现key分发 2.2 PSSH家族命令详解 3.脚本功能及实现过程 3.1 脚本运行环境介绍...

心的哲学
07/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

hive分区

hive为啥分区? hive为了避免全表扫描,从而引进分区技术来将数据进行划分。减少不必要数据的扫描,从而提高效率。 hive的分区和MySQL的分区的区别? mysql分区字段用的是表内字段;而hive分...

Mr_yul
28分钟前
1
0
log4j2发送消息至Kafka

title: 自定义log4j2发送日志到Kafka tags: log4j2,kafka 为了给公司的大数据平台提供各项目组的日志,而又使各项目组在改动上无感知。做了一番调研后才发现log4j2默认有支持将日志发送到kaf...

微笑向暖wx
32分钟前
0
0
LINUX中如何查看某个端口是否被占用(转发)

LINUX中如何查看某个端口是否被占用 之前查询端口是否被占用一直搞不明白,问了好多人,终于搞懂了,现在总结下: 1.netstat -anp |grep 端口号 如下,我以3306为例,netstat -anp |grep 33...

覃大光
今天
1
0
JBolt 1.5.0新版发布,升级到支持最新版JFinal和Jetty,实现了在线更新插件功能

JBolt是一个JFinal极速开发框架 定制版IDE插件 目前仅有Eclipse插件版,Idea插件版正在开发中。 JBolt的详细使用教程请移步到这里 =====版本1.5.0 更新内容 2018年10月13日10:41:52===== 注意...

山东-小木
今天
0
0
laravel 微信支付

1.composer加载laravel微信支付第三方文件 composer require "overtrue/laravel-wechat:~4.0" composer require simplesoftwareio/simple-qrcode 1.3.* //composer生成二维码文件 2.改confi......

vio小黑
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部