[问题记录]mac iterm2 expect 方式sz rz 卡死

时间:2024-03-10 09:04:32

 

解决不支持rz 和sz问题

脚本开头可以加入:export LC_CTYPE=en_US

将本地的LC_CTYPE环境变量设置成en_US,这样再用expect脚本自动登录,登录成功就可以使用rz 和sz传输文件了(亲测可用)

推荐:将此变量放在脚本里设置,这样只是影响当前连接远程机器但session,如果设置在.bash_profile脚本里,则可能会有中文显示乱码问题。

shell脚本如下:

#!/bin/sh
basepath=$(cd `dirname $0`; pwd)
export LC_CTYPE=en_US
#expect脚本所在位置
filepath=$basepath/autologin/loginif [ -f $filepath ]; then
  expect $filepath $1 $2
else
  echo "$filepath not exits"
fi

 

expect脚本如下:

#!/usr/bin/expect
set USER root
set PASSWORD xxxxxxxxxxxx
set HOST xxx.xxx.xxx.xxx
spawn ssh -l $USER $HOST
expect {
   "yes/no" {send "yes\r";exp_continue;}
   "*assword:*" { send "$PASSWORD\r" }
}
# 登录成功后,可以执行别的命令,如
expect "~]*" {send "ssh xxxx\r"}
expect {
   "yes/no" {send "yes\r";exp_continue;}
   "\\\$"
}

 

iterm2设置如下:

 

 

sz/rz的设置可以按照网上方式设置即可, 这样就能使用sz/rz命令了