Linux下通过EXPECT脚本自动执行ssh远程连接
2009-07-27 05:59
711 查看
由于经常需要从家里连到实验室的机器,但是中间需要一个中转,于是就需要连续两次进行ssh操作以及输入密码。加上家里网络不稳,经常会断,就又得重新登录。输入那么一长串的东西特别麻烦。于是觉得应该写一个脚本来自动登录,这样就可以带来极大的方便。
原文链接: Linux下通过EXPECT脚本自动执行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
下面是简单的一个例子,把登录名和密码都显式地写在脚本里。
上面的脚本中,spawn命令激活一个Unix程序来进行交互式的运行。send命令向进程发送字符串。expect命令等待进程的某些字符串。expect支持正规表达式并能同时等待多个字符串,并对每一个字符串执行不同的操作。expect还能理解一些特殊情况,如超时和遇到文件尾。
如果希望脚本有一定的通用性,比如通过参数方式来输入用户名和主机地址。那么脚本可以象这样:
这样执行的时候$argv 0 就是输入的第一个参数, $argv 1 就是输入的第二个参数
3 给脚本加上可执行权限
chmod +x sample.script
如果文件默认有其它权限,建议最好设置为只能自己读取,修改和执行
chmod 700 sample.script
接着就可以通过执行脚本进行远程登录了 ./sample.script
有不解的地方可以参考以下资料
-----------------------------------------------------------------------------------------------
参考资料:
1
expect中文教程
http://www.tclchina.com/article/translation/expect_tutorial/expect_1_cn.htm
http://www.tclchina.com/article/translation/expect_tutorial/expect_2_cn.htm
2
linux下ssh自动登录的脚本
3
嗯,给个完整的 expect 脚本的例子
++++++++++++++++++++++++++++++++++++++++++++++
相关文章:
Linux 脚本编写基础
Linux下通过EXPECT脚本自动执行ssh远程连接
安装 Tcl 和 Expect
Vista系统中的拒绝访问(Access Denied to Documents and Settings )
原文链接: Linux下通过EXPECT脚本自动执行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
下面是简单的一个例子,把登录名和密码都显式地写在脚本里。
#!/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还能理解一些特殊情况,如超时和遇到文件尾。
如果希望脚本有一定的通用性,比如通过参数方式来输入用户名和主机地址。那么脚本可以象这样:
#!/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
有不解的地方可以参考以下资料
-----------------------------------------------------------------------------------------------
参考资料:
1
expect中文教程
http://www.tclchina.com/article/translation/expect_tutorial/expect_1_cn.htm
http://www.tclchina.com/article/translation/expect_tutorial/expect_2_cn.htm
2
linux下ssh自动登录的脚本
3
嗯,给个完整的 expect 脚本的例子
++++++++++++++++++++++++++++++++++++++++++++++
相关文章:
Linux 脚本编写基础
Linux下通过EXPECT脚本自动执行ssh远程连接
安装 Tcl 和 Expect
Vista系统中的拒绝访问(Access Denied to Documents and Settings )
相关文章推荐
- Linux下通过EXPECT脚本自动执行ssh远程连接
- TASKCTL中不使用代理,通过ssh免密连接执行远程脚本配置(SSH插件扩展)
- 用shell脚本为ubuntu自动添加用户,并限定通过ssh连接该用户只能执行特定某个(或某几个)程序
- [置顶] Linux下用expect实现ssh自动登录并执行脚本
- 在linux下如何通过expect正确执行自动切换登录,并且执行命令和脚本
- Linux下自动执行ssh远程连接
- Linux中使用expect脚本实现远程机器自动登录
- Linux 下通过脚本实现远程自动备份
- [ 转载 ] ssh连接远程主机执行脚本的环境变量问题
- linux学习第七十篇:expect脚本同步文件,expect脚本指定host和要同步的文件,构建文件分发系统,批量远程执行命令
- linux expect远程自动登录以及执行命令
- Linux下使用SSH非交互式远程执行命令脚本---ssh无密码登陆
- ssh远程执行命令并自动退出(已测试通过)
- Linux通过脚本实现远程自动备份
- Linux:ssh远程执行命令并自动退出
- ssh远程执行shell脚本结束之后不能自动退出
- Linux 下通过脚本实现远程自动备份
- Linux 系统下通过脚本实现远程自动备份
- JAVA远程(ssh)执行linux脚本
- linux下一脚本自动交互执行小例(expect)