`

提供用户名和密码的SSH自动登录脚本

阅读更多

原文链接:http://aqingsao.iteye.com/blog/600080

使用VPN,每次都要在Terminal上重复输入命令:

ssh -D port user@host

出来密码提示符后,把复杂的密码拷贝下来,然后粘贴到Terminal,敲回车...

 

终于忍受不了这样的重复了,于是用Shell写一个可以自动登录的脚本:

Shell script代码  收藏代码
  1. #!/usr/bin/expect -f  
  2.   
  3. set port port_no  
  4. set user user_name  
  5. set host host_name  
  6. set password my_password  
  7. set timeout -1  
  8.   
  9. spawn ssh -D $port $user@$host  
  10. expect "*assword:*"  
  11.   
  12. send "$password\r"  
  13. expect eof  

把上面的代码命名成vpn,并设置755的权限之后,使用起来就方便了:./vpn。

 

上面脚本中的自动交互用到了expect,那么什么是expect呢?

expect是一个基于Tcl的用于自动交互操作的工具语言,它适合用来编写需要交互的自动化脚本,比如上面提到的SSH输入用户名密码,自动FTP等等场景。

 

除了具有Tcl的语法,expect提供了几个常用的命令:

1. send

用来发送一个字符串,比如 send "hello world"。

初始情况下,这个字符串会发送到标准输出。如果你用的是max OSX或者linux,可以在Terminal下直接输入expect命令并回车,就进入了expect交互环境,此时,输入send "hello world"就可以看到结果。

一旦你的程序已经与其他程序进行交互,字符串就会被发送到其他程序那里。如上面的例子脚本中,我们调用send ”$password\r"就是把密码发送给SSH连接的服务器端指定端口。

 

2. expect

与send相反,expect用来等待你所期望的字符串。比如expect "hello"

在expect后面跟的字符串中,你可以指定一个正则表达式。

expect会一直等待下去,除非收到的字符串与预期的格式匹配,或者到了超期时间。

 

3. spawn

spawn用来启动一个新的进程,比如上面的spawn ssh -D $port $user@$host,Expect会执行命令“ssh -D $port $user@$host”。

在交互式的场景中,当你输入命令后,可能服务器端会返回一些操作提示符,以让你输入命令。Expect提供了这样三个常用的命令,spawn, expect和send,恰好满足这种需要。把它们结合起来使用,可以实现很多简单的自动化脚本。

 

其它常用的命令还有:interact,比如你通过脚本自动连接到了某个ftp,并输入了用户名密码,此时需要人工输入一些命令,就可以使用interact命令,它会把脚本的控制权交给用户;sleep,等待多少秒等等。

 

由于expect是从Tcl继承下来的,所以也支持Tcl的语法和命令,比如变量声明、流程控制等等。

 

上面脚本的一些解释:

1. set timeout 300:设置超时时间300s。如果设为-1,代表永不超时。

2. expect eof:等待接受文件结束符。

分享到:
评论

相关推荐

    ssh 自动登录电脑运行命令脚本

    设置用户名密码后,ssh登录到另一台linux电脑,自动运行命令

    Shell脚本实现自动输入密码登录服务器

    主要介绍了Shell脚本实现自动输入密码登录服务器,本文使用expect来实现这个需求,讲解了expect的安装及使用脚本,需要的朋友可以参考下

    Passwordless-SSH:跨计算机自动创建和配置无密码SSH的脚本

    您可以在命令行上提供两个参数,第一个是将接受无密码登录的主机名,第二个是该计算机上的用户名。 如果省略第二个参数,则用户名将默认为客户端计算机上的用户名,如果省略两个参数,则会以交互方式询问它们。

    PowerShell小技巧之尝试ssh登录

    在PSNet程序集中继续进行扩展,在$env:PSSpace/PSNet/TCPOp/下创建Invoke-SSHLogin.ps1脚本用于在传入指定ssh地址、用户名和密码后返回是否登录成功。 在$env:PSSpace/PSNet/下创建Lib目录用于存放在脚本中需要使用...

    一个简单的自动化运维脚本示例,用于管理远程服务器的基本操作,如执行命令、上传文件、下载文件等

    下面是一个简单的自动化运维脚本...将 your_host、your_username 和 your_password 替换为你的远程服务器的主机名、用户名和密码,然后根据需要使用 execute_command、upload_file 和 download_file 方法执行相应操作。

    ssh expect自动登录的脚本代码

    ssh远程登录,每次都要指定一堆用户名和密码,现要求实现自动登录

    cussh:自动批量创建用户和配置SSH无密码登陆

    3,然后执行initroot.sh脚本,并传入root账号的用户名,密码,此脚本会首先检测系统是否安装过expect,如果没有 安装,则yum下载,如果安装过,则直接进行ssh文件拷贝,并执行公钥认证 4,执行cuser.sh脚本,并传入...

    secure crt 8.5

    2. 改进的自动登录功能:Secure CRT 8.5提供了更好的自动登录功能,可以自动输入用户名和密码,从而简化了登录过程。 3. 改进的多标签支持:Secure CRT 8.5提供更好的多标签支持,可以同时打开多个会话,方便用户...

    Linux expect实现自动登录脚本实例代码

    expect是一个基于Tcl的用于自动交互操作的工具语言,它适合用来编写需要交互的自动化脚本,比如上面提到的SSH输入用户名密码,自动FTP等等场景。下面这篇文章主要给大家介绍了关于Linux expect实现自动登录脚本的相关...

    Xshell 6.0.0089p个人免费版.rar

    (最高优先级、低优先级)通常,SSH2提供高安全性和更多的特征。支持连接后自动指定转到的本地文件夹和远程文件夹。突出显示集:突出显示集允许您配置在Xshell终端上突出显示的关键字列表。这些也接受正则表达式。

    Xshell的压缩包ZIP文件

    脚本:可以为连接会话设置脚本,例如登录后自动执行某个命令或脚本。 Xshell的资源描述可以帮助用户快速连接远程服务器,避免每次都需要手动输入服务器信息,提高工作效率。同时,通过资源描述可以设置会话选项、...

    bdssh:baidu ssh

    bdsshBaidu ssh方便百度内部登录的脚本使用方式修改脚本中第二行和第三行的用户名和密码。用户名就是你的邮箱用户名,密码是你每次 token 之前输入的那个 pin 码。出现Enter SecurID 的时候,输入当前的 token 码。...

    CRT自动抓取配置脚本.rar

    '分割IP,用户名,密码 特权密码 型号简写(z m h b) 位置 params = Split (line) ip = params(0) user = params(1) password = params(2) su = params(3) mode = params(4) whereis = params(5...

    毕业设计,安卓Android APP,火车票查询预订系统App,包括安卓服务器端和安卓客户端,内含完整源码、数据库脚本

    毕业设计,安卓Android APP,火车票查询预订系统App,包括安卓服务器端和安卓客户端,内含完整源码、数据库脚本 安卓Android火车票查询预订系统毕业源码案例设计 系统开发环境: Windows + Myclipse(服务器端) + ...

    ssh批量登录并执行命令的python实现代码

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

    毕业设计,安卓Android APP,商品购物系统App,包括安卓服务器端和安卓客户端,内含完整源码、数据库脚本

    毕业设计,安卓Android APP,商品购物系统App,包括安卓服务器端和安卓客户端,内含完整源码、数据库脚本 安卓Android商品购物系统app设计 系统开发环境: Windows +...会员信息: 会员用户名,登录密码,真实姓名,性别,出

    winscp556.rar

    此外,WinSCP还支持脚本和任务自动化,使得文件传输和管理过程更加高效。 使用WinSCP连接远程服务器时,用户需要填写远程服务器的IP地址、用户名和密码等信息。一旦连接成功,WinSCP将显示本地和远程计算机的文件和...

    armor_AWS_tf_ubu:Terraform脚本可在Ubuntu上自动安装Armor Agent

    机器在AWS EC2中运行后,您将在/rdpcreds.txt文件中看到用户名和密码凭证。 该用户具有sudo权限,所以!! ****请更改该用户的密码,包括ubuntu用户和root用户****! 使用实例的EC2控制台中的公共DNS(IPv4)地址和您...

    CuteFTP Pro 9.0简体中文注册版.rar

    通过它可以轻松从FTP上传或下载文件,支持设置全局最大并行传输数量以及上传和下载的速度,SKA智能连接功能可以保持与FTP服务器之间的连接,支持SSH2安全连接,支持宏和脚本。支持多站点同里边文件目录自动同步,...

    Python实现ssh批量登录并执行命令

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

Global site tag (gtag.js) - Google Analytics