Linux下通过EXPECT脚本自动执行ssh远程连接
来源:互联网 发布:安禄山 知乎 编辑:程序博客网 时间:2024/04/28 20:52
由于经常需要从家里连到实验室的机器,但是中间需要一个中转,于是就需要连续两次进行ssh操作以及输入密码。加上家里网络不稳,经常会断,就又得重新登录。输入那么一长串的东西特别麻烦。于是觉得应该写一个脚本 来自动登录,这样就可以带来极大的方便。
1 expect程序
用的Ubuntu,本身没带expect,安装。
sudo apt-get install expect
(关于expect,参见http://www.tclchina.com/article/translation/expect_tutorial/expect_1_cn.htm )
要从源码安装,参见安装 Tcl 和 Expect
2 写脚本 sample.script
下面是简单的一个例子,把登录名和密码都显式地写在脚本里。
view plaincopy to clipboardprint?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
#!/usr/bin/expect -f
#auto ssh login
set timeout 20
spawn ssh login_name@host_name
expect “*password:”
send “123456/r”
interact
#!/usr/bin/expect -f
#auto ssh login
set timeout 20
spawn ssh login_name@host_name
expect “*password:”
send “123456/r”
interact
上面的脚本中,spawn命令激活一个Unix程序来进行交互式的运行。send命令向进程发送字符串。expect命令等待进程的某些字符串。expect支持正规表达式并能同时等待多个字符串,并对每一个字符串执行不同的操作。expect还能理解一些特殊情况,如超时和遇到文件尾。
如果希望脚本有一定的通用性,比如通过参数方式来输入用户名和主机地址。那么脚本可以象这样:
view plaincopy to clipboardprint?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
#!/usr/bin/expect -f
#auto ssh login
set timeout 20
set login_name [lindex $argv 0]
set host_name [lindex $argv 1]
spawn ssh $login_name@$host_name
expect “*password:”
send “123456/r”
interact
#!/usr/bin/expect -f
#auto ssh login
set timeout 20
set login_name [lindex $argv 0]
set host_name [lindex $argv 1]
spawn ssh $login_name@$host_name
expect “*password:”
send “123456/r”
interact
这样执行的时候$argv 0 就是输入的第一个参数, $argv 1 就是输入的第二个参数
3 给脚本加上可执行权限
chmod +x sample.script
如果文件默认有其它权限,建议最好设置为只能自己读取,修改和执行
chmod 700 sample.script
接着就可以通过执行脚本进行远程登录了 ./sample.script
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/orzorz/archive/2009/07/27/4382717.aspx
- Linux下通过EXPECT脚本自动执行ssh远程连接
- Linux下通过EXPECT脚本自动执行ssh远程连接
- 在linux下如何通过expect正确执行自动切换登录,并且执行命令和脚本
- Linux 远程执行脚本 expect
- Linux下用expect实现ssh自动登录并执行脚本
- Linux下expect的ssh自动登录脚本
- 脚本ssh连接自动填密码(expect)
- linux下一脚本自动交互执行小例(expect)
- expect用法[自动连接远程机器脚本]
- Linux下通过SSH远程连接BAE
- Linux下通过SSH实现远程连接
- expect远程ssh连接linux终端
- linux ssh scp expect/密钥 自动登录并自动执行脚本
- 使用expect和ssh远程执行命令的脚本
- Linux SSH 远程执行脚本
- Linux下使用SSH非交互式远程执行命令脚本
- Linux下使用SSH非交互式远程执行命令脚本
- Linux下使用SSH非交互式远程执行命令脚本
- DotNet Garbage Collection的工作模式
- 数据库根据日志回复数据
- 均匀渐变
- ORA-04030
- 使用Google日历共享招聘会日历表
- Linux下通过EXPECT脚本自动执行ssh远程连接
- chrome快捷键
- android 编译命令
- 键盘扫描--keyscan
- Iterator (C++实现)
- windows 2003 sp2 支持IIS+PHP+MYSQL+PHPmyadmin如何设置
- android logcat 无法正常输出
- 关于.NET应用程序中的资源
- 1000以内的完数--经典c程序100例