Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 需要在TCL脚本中为交换机(CLI)替换命令fedora键盘导航键_Linux_Shell_Tcl_Expect - Fatal编程技术网

Linux 需要在TCL脚本中为交换机(CLI)替换命令fedora键盘导航键

Linux 需要在TCL脚本中为交换机(CLI)替换命令fedora键盘导航键,linux,shell,tcl,expect,Linux,Shell,Tcl,Expect,我有一个开关(基于CLI),当您点击字母表(我可以使用tcl自动执行)时,它会将我带到当前的STP设置,但是当涉及到更改STP设置时,例如从RSTP更改为MSTP时,我必须手动点击向上箭头和向下箭头键(仅提供选项) 我需要帮助以tcl格式给出向上箭头和向下箭头命令,以实现自动化 我读过关于rlwrap的文章,但更多的是历史记录/文件编辑,这可能对我没有帮助。 我尝试了“^[[A”和“[A”选项和六进制代码,但没有成功 我尝试了“\u001b[A”等,但STP值没有改变。CLI是XML CLI。这

我有一个开关(基于CLI),当您点击字母表(我可以使用tcl自动执行)时,它会将我带到当前的STP设置,但是当涉及到更改STP设置时,例如从RSTP更改为MSTP时,我必须手动点击向上箭头和向下箭头键(仅提供选项)

我需要帮助以tcl格式给出向上箭头和向下箭头命令,以实现自动化

我读过关于rlwrap的文章,但更多的是历史记录/文件编辑,这可能对我没有帮助。 我尝试了“^[[A”和“[A”选项和六进制代码,但没有成功

我尝试了“\u001b[A”等,但STP值没有改变。CLI是XML CLI。这是我的脚本。 生成telnet$DUT1_IP expect“登录:”发送“$user\r”expect“密码:”发送“$Password\r”expect“sh-3.2#”#睡眠2发送“xml_cli\r“expect”>>“发送”网桥配置模式=STP”

如果我必须将模式STP更改为MSTP,我需要使用键盘上的向上箭头键将其更改为MSTP/RSTP。如何使用in来处理相同的问题。请给出您的想法,我们是否可以使用shell脚本来处理相同的问题(或任何其他问题)

谢谢和问候 Mo

向上由系统键盘驱动程序映射到一个三字符序列:
^[[a
。第一个字符在这里呈现为
^[
,是一个转义字符,通常不可在屏幕上渲染,您可以使用
\u001b
在Tcl脚本中编写一个真实的字符。向下是相应的
^[B
。(严格地说,它可能是其他字符序列——这毕竟取决于终端类型——但实际上这里所有的字符都使用相同的东西,谢天谢地!)

让我们通过将这些键序列放在变量中来简化事情(我们还需要在真正的
[
前面加一个反斜杠,因为它是Tcl元语法字符):

现在,您可以执行此操作将字符发送到远程端:

send $up
expect "...whatever..."
send $down
expect "...blah..."

@Donal,我会尝试更新你,顺便说一句,在我期望登录切换后,我不会生成任何进程,只有Tcl。但我确信,如果我按照你的建议编写“\^[OA”,它应该会工作。我的切换会看到“^[OA”向上箭头致以最良好的问候,Mo@code您可以将其设置为需要设置的任何值。有一些方法可以在不依赖特定终端类型的情况下获取密钥序列(例如,通过调用
tput
程序)但是在一个地方进行一次设置通常更容易。通常这就是你所需要的。@Donal我尝试了你的建议“\u001b[A”等,但STP值没有改变。这是我的脚本。
spawn telnet$DUT1_IP expect”登录:“发送”$user\r“expect”密码:“发送”$Password\r“expect”sh-3.2#sleep 2 send“xml_cli\r“expect”>>“send”bridge_config_mode=STP”如果我必须将模式更改为MSTP,我需要使用键盘上的向上箭头键将其更改为MSTP/RSTP。如何在expect中使用来处理相同的问题。如果我们可以使用shell脚本来处理相同的问题(或任何其他问题),请给出您的想法。我甚至尝试了“\^[OA”,但失败了。我也会尝试您之前建议的tput方法。非常感谢。致以最良好的问候,请让我知道我们是否可以使用shell脚本来完成此任务。也欢迎您提出任何其他想法。提前感谢,致以问候,Mo
send $up
expect "...whatever..."
send $down
expect "...blah..."