1. Shell脚本实现自动登录

#!/usr/bin/expect -f

set IP 115.22.33.44

set PASSWORD pwdpwd

spawn ssh root@$IP

expect {

"*yes/no" { send "yes\r" }

"*password:" { send "$PASSWORD\r" }

}

interact #交互模式,用户会停留在远程服务器上面

复制代码

其中,*password:"是一种模糊匹配:如果终端输出了以"password:"的交互窗口,脚本就自动匹配并执行{send "$PASSWORD\r"}中的内容。\r表示回车执行。

2. 自动登录后执行命令

比如说,登录服务器后要执行一个导出mysql数据库的命令。

首先,在变量部分增加如下内容:

#!/usr/bin/expect -f

set IP 115.22.33.44

set PASSWORD pwdpwd

set DB_HOST localhost

set DB_USER dbuser

set DB_PASS mysqlpwd

set DB_NAME dbname

set SERVER_PATH /root/www

spawn ssh root@$IP

expect {

"*yes/no" { send "yes\r" }

"*password:" { send "$PASSWORD\r" }

}

expect "root@*" {send "cd $SERVER_PATH\r"}

expect "root@*" {send "mysqldump -u$DB_USER -p$DB_PASS -h$DB_HOST -B $DB_NAME > $DB_NAME.sql\r"

expect eof

复制代码

3、在expect脚本中使用bash

值得注意的是,上述脚本都引用了#!/usr/bin/expect -f,可以称之为expect脚本。expect和bash是两回事,内部使用的语法也就完全不同了。

有时在expect脚本需要继续执行一些bash,该怎么做呢?比如上面将数据库导出后,下载到本地,导入本地数据库,则需要使用 spawn bash。

#!/usr/bin/expect -f

set IP 115.22.33.44

set USER root

set PASSWORD pwdpwd

set DB_HOST localhost

set DB_USER dbuser

set DB_PASS mysqlpwd

set DB_NAME dbname

set SERVER_PATH /root/www

set LOCAL_PATH /Users/Download

set LOCAL_DB_USER root

set LOCAL_DB_PASS localdbpwd

set prompt {\$ $}

spawn ssh $USER@$IP

expect {

"*yes/no" { send "yes\r" }

"*password:" { send "$PASSWORD\r" }

}

#使用puts而不是echo,来输出信息

puts "login to server: $IP and dump database $DB_NAME"

expect "root@*" {send "cd $SERVER_PATH\r"}

expect "root@*" {send "mysqldump -u$DB_USER -p$DB_PASS -h$DB_HOST -B $DB_NAME > $DB_NAME.sql\r"

expect eof

puts "下载 $DB_NAME.sql 到本地"

spawn scp $USER@$IP:$SERVER_PATH/$DB_NAME.sql $LOCAL_PATH/

expect {

"*yes/no" { send "yes\r" }

"*password:" { send "$PASSWORD\r" }

}

expect eof

puts "导入本地mysql数据库"

spawn /bin/bash

expect -re $prompt

send "cd $LOCAL_PATH\r"

send "mysql -u$LOCAL_DB_USER -p$LOCAL_DB_PASS -e'drop database if exists $DB_NAME;source $TEMP_PATH/$DB_NAME.sql;'\r"

send "exit\r"

expect eof

exit复制代码

linux shell自动登录,Shell自动登录并执行命令相关推荐

  1. Linux Shell脚本专栏_批量主机远程执行命令脚本_08

    文章目录 1. 安装expect 2. 脚本制作 3. 赋予权限 4. 运行脚本 5. 直接运行脚本 6. vmstat测试 1. 安装expect [root@localhost ~]# yum i ...

  2. expect 普通用户自动输入密码到root下,执行命令

    案例:当前服务器取消了直接使用root登录服务器,只能使用普通用户先登录,然后再su - root 执行root下的命令. shell脚本如下: #!/usr/bin/expect -f set pa ...

  3. shell脚本ssh到远程服务器并执行命令

    shell远程执行: 经常需要远程到其他节点上执行一些shell命令,如果分别ssh到每台主机上再去执行很麻烦,因此能有个集中管理的方式就好了.一下介绍两种shell命令远程执行的方法. 前提条件: ...

  4. shell脚本打开另一终端 并执行命令

    有时候,需要开两个终端,到同一目录下分别执行启动服务端和客户端的操作,感觉这种操作有点麻烦,就写个shell脚本来帮我弄: #!/bin/bash # 先切换当前终端的目录 cd /etc/redis ...

  5. .net 服务器自动执行,自动检测服务器使用流量并执行命令脚本

    #coding=utf-8 limit_total=0# limit_total 上传+下载的流量限制,单位GB,如果不限制就是0,如果限制1T就是1024 limit_in=0# limit_in ...

  6. 批量验证ssh账号密码登录shell脚本

    (适用于已知IP.用户名.密码和端口的验证情景) #!/bin/shtimeout=3 cmd="id > /tmp/b4"login(){for i in `cat ssh ...

  7. Linux基础之bash shell介绍及基本特性

    今天继续讲Linux基础知识,内容是关于bash shell的.分享以下bash shell的相关知识,例如基本特性等.  1.8)bash shell的介绍 1.8.1)什么是bash shell ...

  8. shell学习之shell基础知识了解

    一.了解bash shell /etc/bash是Linux系统预设的shell.bash是GNU计划中重要的工具软件之一,目前也是Linux distributions的标准 shell. Shel ...

  9. python实现ssh登录send_Python实现ssh批量登录并执行命令

    局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务 是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软 ...

  10. python ssh 远程登录路由器执行命令_ssh批量登录并执行命令(python实现)

    局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...

最新文章

  1. 数字图像处理6:配准与掩膜
  2. 第 171 章 vagrant - Tool for building and distributing virtualized development environments
  3. win7删除计算机库文件,win7怎么将“库”从资源管理器导航栏中删除【图文】
  4. linux的mysql主主_Linux下指定mysql数据库数据配置主主同步的实例
  5. python连接池框架_python pymysql 连接池
  6. 数组算法 中部删除数据 1202
  7. java 中反射的使用_java中反射的基本使用
  8. html怎么根据控IE制台找错误,IE调试网页之三:控制台查看错误和状态
  9. 【Django】ImportError: cannot import name 'execute_manager'
  10. axios Post无法传递数据的解决方案
  11. 点这里安装Alexa工具条
  12. Python网络爬虫数据抓取思路,静态与动态页面爬取思路,爬虫框架等
  13. Python提取docx格式Word文档中所有尾注
  14. windows计算机资源管理器,windows10系统打开资源管理器的三种方法
  15. 计算机d盘可以格式化吗,d盘怎么格式化
  16. windows网络通讯端口
  17. 用什么软件可以修改PDF文件,软件的操作方法
  18. 查看Ubuntu中的OpenCV、Eigen、Ceres版本
  19. Linux--增加用户、添加用户组
  20. 负数在计算机中的编码形式

热门文章

  1. JS for循环练习题
  2. 解决LinuxMINT上连接ChinaUnicom问题
  3. opencv录制视频 python_OpenCV Python 录制视频
  4. 如何使用Loadrunner12在win10系统 最新版本谷歌浏览器录制脚本
  5. MATLAB绘制图中图
  6. 【开源】STC12C5A60S2开发板
  7. wechat微信小程序 :对应的服务器证书无效
  8. Diligent宣布2021年现代治理100强公司名单
  9. 程序集(dll) 安装到 GAC 程序集添加到VS引用开窗(转)
  10. BubbleGum96 开箱杂谈与软件资源