搬瓦工中文笔记

Linux 系统 Expect 脚本 SSH 示例教程

Expect 脚本是一个很棒的 linux/unix 实用程序。我在日常生活中必须处理很多 unix 服务器,无论是在工作中还是我的托管服务器。所以我需要记住很多 SSH 用户,他们的密码,然后是 SU 用户和密码。服务器数量多的时候有点乱。所以我想写一个脚本,让我自动登录到服务器。当我第一次开始做这件事时,我被困在如何输入 SSH 密码的问题上,因为普通的 unix shell 在提示登录时无法发送密码。然后我开始了解 expect 脚本,它允许自动与打开终端输入的程序进行交互。

Expect Script 非常容易学习,顾名思义,它通过解析命令的输出来工作,当它与指定的正则表达式匹配时,它会处理指定的指令。

一、Expect 脚本 SSH 示例

这是我创建的脚本,用于自动登录到 SSH 服务器,然后使用超级用户登录,然后运行一个简单的命令。sshsudologin.expect

#!/usr/bin/expect

#Usage sshsudologin.expect     

set timeout 60

spawn ssh [lindex $argv 1]@[lindex $argv 0]

expect "yes/no" { 
	send "yes\r"
	expect "*?assword" { send "[lindex $argv 2]\r" }
	} "*?assword" { send "[lindex $argv 2]\r" }

expect "# " { send "su - [lindex $argv 3]\r" }
expect ": " { send "[lindex $argv 4]\r" }
expect "# " { send "ls -ltr\r" }
interact

二、关于 Expect 脚本的要点

  1. 请注意指定 expect 脚本将用作解释器的第一行。
  2. 预计脚本默认超时为 10 秒,因此我将超时设置为 60 秒以避免在登录提示需要时间时出现任何超时问题。
  3. 请注意 expect 命令后跟正则表达式,然后是应该作为响应发送的内容。 添加第一个是/否选项以确保在尚未导入远程服务器密钥时不会失败。
  4. 另一个 expect 正则表达式因服务器而异,对于我的服务器,它以“#”结尾,但对于其他一些服务器,它可能以“$”结尾,因此您可能需要相应地对其进行编辑。 唯一要检查的是 expect 命令的正则表达式应该匹配,以便它发送相应的命令或密码。
  5. 最后一个 expect 命令只是表明我们也可以在登录到服务器后发送命令。

这是我使用正确参数运行上面的 expect 脚本时的输出。

pankaj@Pankajs-MacBook-Pro:~$/Users/pankaj/scripts/sshloginsudo.expect 'journaldev.com' 'pankaj' 'ssh_pwd' 'su_user' 'su_pwd'
spawn ssh pankaj@journaldev.com
pankaj@journaldev.com's password: 
Last login: Sun Jun  9 19:54:17 2013 from c-67-161-57-160.hsd1.ca.comcast.net
pankaj@journal [~]# su - su_user
Password: 
su_user@journal [~]# ls -ltr
total 708
...

三、关于 Expect 脚本的额外提示

四、搬瓦工新手教程和优惠套餐

搬瓦工官网: bwh81.net

搬瓦工最推荐套餐

  1. 搬瓦工优惠码:BWHCGLUKKB
  2. 搬瓦工购买教程:《搬瓦工新手用户注册和支付宝购买图文指导教程
方案内存CPU硬盘流量/月带宽机房价格购买
KVM
(最便宜)
1GB2核20GB1TB1GbpsDC3 CN2
DC8 ZNET
(购买后在后台迁移)
$49.99/年购买
KVM2GB3核40GB2TB1Gbps$52.99/半年
$99.99/年
购买
CN2 GIA-E
(最推荐)
1GB2核20GB1TB2.5GbpsDC6 CN2 GIA-E
DC9 CN2 GIA
日本软银 JPOS_1
荷兰联通 EUNL_9
加拿大 CN2 GIA
$49.99/季度
$169.99/年
购买
CN2 GIA-E2GB3核40GB2TB2.5Gbps$89.99/季度
$299.99/年
购买
HK2GB2核40GB0.5TB1Gbps中国香港 CN2 GIA
新加坡 CN2 GIA
日本东京 CN2 GIA
日本大阪 CN2 GIA
$89.99/月
$899.99/年
购买
HK4GB4核80GB1TB1Gbps$155.99/月
$1559.99/年
购买
OSAKA2GB2核40GB0.5TB1.5Gbps日本大阪 CN2 GIA$49.99/月
$499.99/年
购买
OSAKA4GB4核80GB1TB1.5Gbps$86.99/月
$869.99/年
购买

选择建议:

退出移动版