1. 程式人生 > >解決使用expect自動登入後,不能使用rz和sz命令問題

解決使用expect自動登入後,不能使用rz和sz命令問題

解決不支援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;}
   "\\\$"
}
--------------------- 
作者:byds520 
來源:CSDN 
原文:https://blog.csdn.net/lovewebeye/article/details/85049423 
版權宣告:本文為博主原創文章,轉載請