Mac 下远程使用终端

包含三部分, 1.终端的配置; 2.集群免密登陆; 3.本地集群免密文件传输;

1. 终端配置

推荐使用配方: iTerm2 + Oh my zsh + zsh,教程网上有一大堆,优点也不再赘述,下边是一个参考链接: Mac下iTerm 2语法高亮配置及附带美化 - 简书

2. 集群免密登陆

好处是不用每次都输入 IP 和密码,个人感觉比 Putty 什么的好用很多;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
## 1. 首先写一个 expect 脚本, 用于自动交互, 以 login.expect 为例
# login.expect
#!/usr/bin/expect -f
set user account ## 集群账号
set host IP ## 集群 IP
set password xxxx ## xxxx 为集群登陆密码
set timeout -1

spawn ssh $user@$host
expect "*assword:*"
send "$password\r"
interact
expect eof

## 2. 然后命令行使用 expect login.expect 登陆即可;
#如果嫌麻烦的话,可以在 .zshrc (或者 .bashrc) 文件里设置如下:
alias lg="expect login.expect"
#这样每次输入 lg 即可登陆,同理多个 IP 可设置多个脚本来配置运行;

3. 本地 <=> 集群文件免密文件传输

如果喜欢界面交互的话,可以使用一些现成的软件,比如 FileZilla - The free FTP solution
如果喜欢命令行的话,也可以通过脚本来传输,方法和上边类似;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## 1. 首先写一个 expect 脚本, 以 scp.expect 为例
# scp.expect
#!/usr/bin/expect -f
set src_file [lindex $argv 0] #用于外接参数
set dest_dir [lindex $argv 1] #用于外接参数
set user account #集群账号
set host IP #集群 IP
set password xxxx #集群密码
set timeout -1

spawn scp -r $user@$host:$src_file $dest_dir #集群到本地
# spawn scp -r $src_file $user@$host:$dest_dir #本地到集群
# spawn rsync -avl $user@$host:$src_file $dest_dir # 使用 rsync 传输
expect "*assword:"
send "$password\r"
expect "100%"
expect eof

## 2. 然后命令行使用 expect scp.expect 登陆即可;
#如果嫌麻烦的话,可以在 .zshrc (或者 .bashrc) 文件里设置如下:
alias scp="expect scp.expect"
#这样每次输入 scp 即可登陆,同理多个 IP 可设置多个脚本来配置运行;
(✪ω✪)