expect写脚本

expect写脚本

~/.ssh/know_hosts文件 [远程ip:公钥]

当我们使用公钥去ssh连接一台远程主机时,系统默认会把访问过的主机的公钥都记录在 ~/.ssh/know_hosts

cat ~/.ssh/known_hosts
192.168.221.20 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHzi7l7PDXCUwFW6Xy6Ipg7FwTwHT9oiEfpHSqTTm1pBc0abAGgBjh8KwqkhmP+Au4D4+1k8XiZGvo0TYhSTi+c=

expect远程登录另外一台机器

yum install expect -y
vim /usr/local/sbin/expect/expect-login.sh
#! /usr/bin/expect    //注意与“#!/bin/bash”区分开来
set host "192.168.221.20"   //设置2个变量host,passwd
set passwd "root"
spawn ssh [email protected]$host
expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
interact   //停留在远程机器上不退出来  expect eof  停留在远程机器上一会儿再退出

chmod +x /usr/local/sbin/expect/expect-login.sh
[[email protected] expect]# ./expect-login.sh   //特别注意不能用bash去执行
spawn ssh [email protected]
[email protected]‘s password:
Last login: Sun Mar 18 10:33:33 2018 from 192.168.221.10
[[email protected] ~]#

expect远程登录另外一台机器并执行命令

vim expect-login-exec.sh
#! /usr/bin/expect
set host "192.168.221.20"
set passwd "root"
spawn ssh [email protected]$host
expect {
"yes/no" { send "yes\r"; exp_continue}
"password:" { send "$passwd\r" }
}
expect "]*"
send "touch /tmp/expect.txt\r"
expect "]*"
send "echo expect > /tmp/expect.txt\r"
expect "]*"
send "exit\r"

[[email protected] expect]# chmod +x expect-login-exec.sh
[[email protected] expect]# ./expect-login-exec.sh
spawn ssh [email protected]
[email protected]‘s password:
Last login: Sun Mar 18 11:14:46 2018 from 192.168.221.10
[[email protected] ~]# touch /tmp/expect.txt
[[email protected] ~]# echo expect > /tmp/expect.txt
[[email protected] ~]# [[email protected] expect]

原文地址:http://blog.51cto.com/13480443/2088099

时间: 2024-10-10 11:00:34

expect写脚本的相关文章

写脚本时整数比较与字符串的比较

写脚本时整数比较与字符串的比较: 整数比较-eq 等于,如:if [ "$a" -eq "$b" ]-ne 不等于,如:if [ "$a" -ne "$b" ]-gt 大于,如:if [ "$a" -gt "$b" ]-ge 大于等于,如:if [ "$a" -ge "$b" ]-lt 小于,如:if [ "$a" -lt &q

运维常写脚本总结

常写脚本分类 - 监控脚本 - 备份脚本 - 部署脚本 - 业务脚本 监控脚本(如): 监控TCP各连接状态脚本,监控端口脚本-- 备份脚本(如) 备份数据库脚本,备份目录脚本-- 部署脚本(如): 游戏环境安装脚本:开服.合服脚本:系统初始化脚本-- 业务脚本(如): 游戏日志合并脚本.查询数据库脚本.更新脚本--

expect交互式脚本

Solaris_change_passwd使用注意事项及说明 1. 脚本只测试了Solaris10的英文及中文版(oracle公司出品) 2. Solaris10中文版系统需要将系统字符集改为zh_CN.UTF-8 3. 以bash执行此脚本 bash Solaris_change_passwd 用户名($1) IP地址($2) 用户密码($3) 需要更改密码的用户名($4) 更改的用户密码($5) 脚本变量定义: #!/bin/bash USER=$1          #用户名 IP=$2

《神秘的程序员们》57:为什么程序员们喜欢写脚本?

投递人 itwriter 发布于 2016-09-25 13:11 评论(6) 有674人阅读 原文链接 [收藏] « » 想更深入了解这个话题的同学,请移步霍老爷的文章<程序员爱写脚本是种病>:https://news.cnblogs.com/n/553596/ 抢房子/工作/老婆那一段台词来自王渊命同学的吐槽,已获得改编授权,感谢隔壁老王. 8 0 推荐成功 来自: mp.weixin.qq.com

LoadRunner JAVA Vuser协议手工写脚本Failed to find Classes.zip entry in Classpath问题 .

JAVA Vuser协议手工写脚本Failed to find Classes.zip entry in Classpath问题解决方法: 前提条件: 环境变量:正确的配置了JAVA_HOME,path正确的指明了JAVA_HOME的bin路径和LR的bin路径,classpath中指明了jdk的lib路径和LR的lib路径. 当前LoadRunner的版本是9.0版. 当前的JDK版本是1.7. 一.错误内容如下: 通知: Found jdk version: 1.7.0. [MsgId: M

fiddle(抓包)+jmeter写脚本,完成一次接口测试

二.fiddle篇 (ps:其实是之前教别人压力测试时,把我提供的网站给搞崩了,所以现在我就不提供了,当然博客里面也会出现) 1.安装fiddle:fiddle是一款非常好用且易上手的抓包工具,安装完成就能用,就算是新手看完一两个教程,也能上手. 首先我们要下载它的安装包,下载地址:https://www.telerik.com/download/fiddler ,进入页面后,根据自己的需要选择就行 ps:英文不太好?没关系,我把翻译过的页面也放上去吧.(Google Chrome浏览器自带翻译

shell写脚本思路

Shell脚本编写思路:(需求分析) 1.LAMP源码一键整合 ======================= 1)安装apache.Mysql.PHP.LAMP整合: ------------------------ 安装apache 安装MYSQL 安装PHP ------------------------- 2)去官网下载相应的版本,解压.编译: 软件的版本信息 定义变量,变量名设置 安装的参数.安装的目录: ------------------------- 3)整合LAMP源码: M

写脚本的一些心得-----------------------历史数据迁移到分表

历史数据迁移到分表的.(以前单表几十G的表,需要做优化分表) 背景: 之前项目因为历史原因使用的是mssql,其中有大量的各种log表,需要完整地迁移到mysql的按照日期分表的分表里.由于数据量大和表当初设计的一些缺陷,所以在迁移的时候要考虑查询效率和执行效率问题. 我采用的方式如下: 每一个表一个function去处理.其实写这种导数据的应该对传入参数减少.我当初写的是开始时间和天数的传入,然后根据时间戳算出连续时间的字符串,用来去生成对应的天表表面中的字符串.其实后来想想,完全可以传入2个

expect 命令脚本语言实战

一.expect 实现自动填入密码 1.vi ssh.exp.201 #!/usr/bin/expect spawn ssh -p 20000 [email protected] /sbin/ifconfig eth0set timeout 60expect "*password:"send "abcdef\n"expect eofexit 2.chmod 700 ssh.exp.201  #注.要是没有权限执行,也可以直接expect,700权限.防止其它用户查看