Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.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 处理二进制文件时获得与cat类似的输出_Linux_Bash_Expect_Cat - Fatal编程技术网

Linux 处理二进制文件时获得与cat类似的输出

Linux 处理二进制文件时获得与cat类似的输出,linux,bash,expect,cat,Linux,Bash,Expect,Cat,我创建了bash脚本,以使用expect备份许多不同的交换机。 因为例如,D-Link开关上的命令show config current_config显示一行接一行太慢,如每秒1-2行,当超过1000行时,我决定启用clipagaing,当开关请求反应时,我使用如下循环: for {} {1} {} { expect -exact "CTRL" {send -- " "} -exact "DES-3028:" {send -- "logout\r"}} 或发送-\r以输入一行,而不是空白一页

我创建了bash脚本,以使用expect备份许多不同的交换机。 因为例如,D-Link开关上的命令show config current_config显示一行接一行太慢,如每秒1-2行,当超过1000行时,我决定启用clipagaing,当开关请求反应时,我使用如下循环:

for {} {1} {} {
expect -exact "CTRL" {send -- " "} -exact "DES-3028:" {send -- "logout\r"}}
或发送-\r以输入一行,而不是空白一页

当我使用该循环备份一个开关时,只需不到5秒,但在输出中,我得到了很多行,其中包含开关问题,即如何操作

当我在vim中打开expect创建的文件时,我看到如下行:

^M ^[[7mCTRL+C^[[0m ^[[7mESC^[[0m ^[[7mq^[[0m Quit \
^[[7mSPACE^[[0m ^[[7mn^[[0m Next Page ^[[7mENTER^[[0m Next Entry \
^[[7ma^[[0m All ^M^@ ^M^@^[[1Aconfig loopdetect port 1 state enabled
当我做cat文件1时,我得到

config loopdetect port 1 state enabled
这就是我想要的

当我执行cat file1>file2时,我会得到file1的精确副本

这里有一个示例文件

尝试对其进行cat并将其cat到另一个文件。我想让cat的效果显示在屏幕上,但显示在另一个文件上


如果您有任何建议,我将不胜感激。

应该有一个HTTP页面,您可以将整个配置作为文件下载


使用wget或curl等工具从脚本下载文件。

这不是选项。我不会通过HTTP连接到数百个交换机。Bash脚本使用ssh或telnet连接到一个又一个交换机。预期日志输出到文件,我得到了我在示例链接中显示的部分。如果您可以通过ssh连接,为什么不使用scp下载配置文件?我不知道通过ssh或HTTP连接有多么大的区别,以至于您完全拒绝它。HTTP有什么问题?@Aarondigula您似乎不理解手头的问题。OP使用SSH登录带有专有软件的交换机。几乎可以肯定的是,配置既不是通过内置的web服务器提供的,也不可能只是简单地通过scp将其发送出去。通常,会有一个命令告诉设备通过TFTP上传其配置。这就是为什么像这样的工具首先存在的原因。很抱歉回答得不够快。当你写关于scp的文章时,我被启发了——为什么我要使用expect和expect日志显示所有配置,而不仅仅是使用expect发送upload cfg_totfp,并开始在另一个交换机上查找upload to tftp命令。是的,你的回答很有用。非常感谢。至于HTTP,我只是在所有交换机中禁用了它。因此,如果所有交换机都能上传到tftp或以其他方式从中获取配置文件,那么我的问题可能就不存在了。我想知道为什么show config current_config需要这么长时间才能向您发送输出会很有趣。当您通过SSH登录并运行命令时,速度是否也很慢?如果将输出重定向到框中的文件。也就是说,是命令速度慢还是向您发送数据?