linux 下使用expect编写shell 脚本交互访问远程服务器
2016-09-28 19:28
696 查看
使用命令行登陆远程服务器一般需要ip地址以及登陆密码等,每次都手动输很不方便,expect可以满足自动输入密码。下面是详细的介绍:
首先安装expect:
我用的是ubuntu14.04,使用sudo apt-get install expect即可安装
然后使用
which expect来查看expert的路径,我的路径是
/usr/bin/expect
然后编写脚本:
以198.175.102.32:10000为例,账号为Team002,密码为××××××
使用
vim connect.sh新建脚本
下面是shell脚本的代码:
#!/usr/bin/expect set timeout 30 spawn ssh Team002@198.175.102.32 -p 10000 expect "password:" send "××××××\r" interact
然后修改权限:
保存退出,使用sudo chmod +x connect.sh将connect.sh文件变为可执行文件>
下面运行脚本:
使用./connect.sh即可运行,运行结果见下图:
可以看到,这里自动连接服务器并输入密码,登陆成功
最后是代码的介绍
第一行#!/usr/bin/expect中的
/usr/bin/expect为
which expect之后的路径
第二行
set timeout 30是设置第四行等待时间最长为30s
第三行
spawn ssh Team002@198.175.102.32 -p 10000是使用spawn来执行
ssh Team002@198.175.102.32 -p 10000这条命令,其中Team002是账号,198.175.102.32为IP地址,10000为端口号
第四行
expect "password:"是等待终端输出中的字符串中是否包含
password:,如果包含,执行下一行,否则等待超过第二行设置的30s之后继续执行下一行
第五行
send "××××××\r"用来实现自动输入密码,示例密码为xxxxxx
最后一行
interactr"的作用是执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。
相关文章推荐
- Ubuntu 默认壁纸历代记
- Ubuntu Remix Cinnamon 20.04 评测:Ubuntu 与 Cinnamon 的完美融合
- 小心服务器内存居高不下的元凶--WebAPI服务
- android wifi 无线调试
- 关于Ubuntu 11.10启动提示waiting for the network configuration的问题
- 在 Ubuntu 桌面中使用文件和文件夹
- ubuntu下chrome无法同步问题解决
- 运维入门
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- Ubuntu Linux使用体验
- 使用 GNOME 优化工具自定义 Linux 桌面的 10 种方法
- 以Ubuntu 9.04为例 将工作环境迁移到 Linux
- VirtualBox虚拟机XP与宿主机Ubuntu互访共享文件夹
- 从USB安装Ubuntu Server 10.04.3 图文详解
- Ubuntu 15.04 正式版发布下载
- Linux-Ubuntu 10.04安装Cadence-ic610 方法总结图解
- Ubuntu 12.04和Windows 7双系统安装图解
- Ubuntu /home下中文目录如何修改成英文?