linux shell自动登录,Shell自动登录并执行命令
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自动登录并执行命令相关推荐
- Linux Shell脚本专栏_批量主机远程执行命令脚本_08
文章目录 1. 安装expect 2. 脚本制作 3. 赋予权限 4. 运行脚本 5. 直接运行脚本 6. vmstat测试 1. 安装expect [root@localhost ~]# yum i ...
- expect 普通用户自动输入密码到root下,执行命令
案例:当前服务器取消了直接使用root登录服务器,只能使用普通用户先登录,然后再su - root 执行root下的命令. shell脚本如下: #!/usr/bin/expect -f set pa ...
- shell脚本ssh到远程服务器并执行命令
shell远程执行: 经常需要远程到其他节点上执行一些shell命令,如果分别ssh到每台主机上再去执行很麻烦,因此能有个集中管理的方式就好了.一下介绍两种shell命令远程执行的方法. 前提条件: ...
- shell脚本打开另一终端 并执行命令
有时候,需要开两个终端,到同一目录下分别执行启动服务端和客户端的操作,感觉这种操作有点麻烦,就写个shell脚本来帮我弄: #!/bin/bash # 先切换当前终端的目录 cd /etc/redis ...
- .net 服务器自动执行,自动检测服务器使用流量并执行命令脚本
#coding=utf-8 limit_total=0# limit_total 上传+下载的流量限制,单位GB,如果不限制就是0,如果限制1T就是1024 limit_in=0# limit_in ...
- 批量验证ssh账号密码登录shell脚本
(适用于已知IP.用户名.密码和端口的验证情景) #!/bin/shtimeout=3 cmd="id > /tmp/b4"login(){for i in `cat ssh ...
- Linux基础之bash shell介绍及基本特性
今天继续讲Linux基础知识,内容是关于bash shell的.分享以下bash shell的相关知识,例如基本特性等. 1.8)bash shell的介绍 1.8.1)什么是bash shell ...
- shell学习之shell基础知识了解
一.了解bash shell /etc/bash是Linux系统预设的shell.bash是GNU计划中重要的工具软件之一,目前也是Linux distributions的标准 shell. Shel ...
- python实现ssh登录send_Python实现ssh批量登录并执行命令
局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务 是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软 ...
- python ssh 远程登录路由器执行命令_ssh批量登录并执行命令(python实现)
局域网内有一百多台电脑,全部都是linux操作系统,所有电脑配置相同,系统完全相同(包括用户名和密码),ip地址是自动分配的.现在有个任务是在这些电脑上执行某些命令,者说进行某些操作,比如安装某些软件 ...
最新文章
- 数字图像处理6:配准与掩膜
- 第 171 章 vagrant - Tool for building and distributing virtualized development environments
- win7删除计算机库文件,win7怎么将“库”从资源管理器导航栏中删除【图文】
- linux的mysql主主_Linux下指定mysql数据库数据配置主主同步的实例
- python连接池框架_python pymysql 连接池
- 数组算法 中部删除数据 1202
- java 中反射的使用_java中反射的基本使用
- html怎么根据控IE制台找错误,IE调试网页之三:控制台查看错误和状态
- 【Django】ImportError: cannot import name 'execute_manager'
- axios Post无法传递数据的解决方案
- 点这里安装Alexa工具条
- Python网络爬虫数据抓取思路,静态与动态页面爬取思路,爬虫框架等
- Python提取docx格式Word文档中所有尾注
- windows计算机资源管理器,windows10系统打开资源管理器的三种方法
- 计算机d盘可以格式化吗,d盘怎么格式化
- windows网络通讯端口
- 用什么软件可以修改PDF文件,软件的操作方法
- 查看Ubuntu中的OpenCV、Eigen、Ceres版本
- Linux--增加用户、添加用户组
- 负数在计算机中的编码形式