在我的公司中,当进入其他系统时,我们使用expect
自动化任务。ssh
我们所有的旧系统都运行 ISO-8859-1 字符编码,而我们的桌面系统运行 UTF-8 编码。ssh
当从我们的一个桌面进入我们的遗留系统时,这当然会带来某些挑战。
这很容易解决,方法是在开始会话之前删除SendEnv
行并将 Gnome 终端字符编码设置为 ISO-8859-1。从命令提示符或脚本手动执行此操作时效果很好。但是,当从脚本内部执行此操作时,它会失败。看起来字符编码要么根本没有处理,要么从内部处理不正确,这会导致我们在输入特殊字符时出现错误的字符。/etc/ssh/ssh_config
ssh
bash
expect
expect
有效的裸骨bash
脚本:
#!/bin/bash
ssh user@server
产生错误的基本expect
脚本:
#!/usr/bin/expect --
spawn ssh user@server
interact
在执行这两个脚本之前,已经手动正确设置了 Gnome 终端字符编码。这两个脚本应该工作相同,通过ssh
进入服务器并让用户输入密码。但是bash
脚本正确处理字符编码,而expect
脚本会产生损坏的特殊字符。
我假设我遗漏了一些明显的东西,但我无法弄清楚我遗漏了什么。
编辑:我们已经尝试过luit
,但没有帮助。它只会导致不同的错位字符。