解决不支持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/login-a
if [ -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;}
"\\\$"
}