mac 电脑自动登录服务器

mac 电脑自动登录服务器

Iterm+expect 结合方式实现

expect 是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。它的自动交互流程如下:

spawn 启动指定进程 ---> expect 获取指定关键字 ---> send 向指定程序发送指定字符 ---> 执行完成退出

接下来我们将利用 expect 来实现 ssh 自动登录。首先新建一个文件 /usr/local/bin/iterm2Login.sh,内容如下:

#!/usr/bin/expect

set timeout 30
set host [lindex $argv 0]
# 这一行是设置一个变量的意思,变量名随便起,尽量有意义,后面表示的是传入的参数,0 表示第一个参数,后面会用到。
set port [lindex $argv 1]
set user [lindex $argv 2]
set pswd [lindex $argv 3]

spawn ssh -p $port $user@$host 
# spawn 是 expect 环境的内部命令,它主要的功能是给 ssh 运行进程加个壳,用来传递交互指令。

expect {
        "(yes/no)?"
        {send "yes\n";exp_continue;}
       -re "(p|P)ass(word|wd):"
        {send "$pswd\n"}
}
# expect 也是 expect 环境的一个内部命令,用来判断上一个指令输入之后的得到输出结果是否包含 "" 双引号里的字符串,-re 表示通过正则来匹配。
# 如果是第一次登录,会出现 "yes/no" 的字符串,就发送(send)指令 "yes\r",然后继续(exp_continue)。

interact
# interact:执行完成后保持交互状态,把控制权交给控制台。

argv 0, argv 1, argv 2, argv 3 三个参数依次为 ip、端口号、用户名、密码。

赋予脚本执行权限:

$ sudo chmod +x /usr/local/bin/iterm2Login.sh

将 Profile 中的 Command 部分替换成通过上面的脚本来登录:

image-20210112103457462

export LC_CTYPE=en_US;/usr/local/bin/iterm2Login.sh 172.16.2.84 22 root "1"

添加正则表达式

image-20210112104010179

Regular expression: Are you sure you want to continue connecting (yes/no)?
Action: Send Text
Parameters: yes\r
Instant: checked

image-20210112104021357

然后就可以自动登录服务器了

使用 Zmodem 实现快速传输文件

服务器和 mac电脑上都需要安装 lrzsz 软件包

#centos && RHEL
yum -y install lrzsz
# Ubuntu && Debian
apt-get install lrzsz
# Mac os
brew install lrzsz

配置 iTerm2

在全球最大同性交友网站 Github 上,已经有人共享了一个叫 “ZModem integration for iTerm 2” 的项目。我们只需下载其相应脚本,并进行简单配置就可以很容易的在 iTerm2上实现对 Zmodem 的支持。

项目地址:https://github.com/kuoruan/iterm2-zmodem[2]

  • 下载并安装脚本
$ wget -qO /usr/local/bin/iterm2-zmodem.sh https://github.com/kuoruan/iterm2-zmodem/raw/master/iterm2-zmodem.sh
$ chmod +x /usr/local/bin/iterm2-zmodem.sh
  • 配置 iTerm2 上的触发器

打开 iTerm2 ,点击 PreferencesProfiles 选择指定的 Profile。然后继续选择 AdvancedTriggers,并点击 Edit 添加两个触发器。

按如下内容添加两个触发器,首先增加 sz 指令的触发器:

Regular expression: rz waiting to receive.\*\*B0100
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-zmodem.sh send
Instant: checked

其次增加 rz 指令的触发器:

Regular expression: \*\*B00000000000000
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-zmodem.sh recv
Instant: checked

成功增加完成后的效果,类似下图:

image-20210112104033757

配置这两个触发器的作用就是让 iTerm2 根据终端上显示的字符通过指定的触发器调用相应的发送和接收脚本。

摘抄: https://mp.weixin.qq.com/s/04de3GWAoZm-D35eYOHs4A

posted @ 2021-01-12 10:43  张首富  阅读(351)  评论(0编辑  收藏  举报