plink.exe - 设置终端中的行数?

问题描述 投票:-1回答:2

我正在尝试使用plink从交换机中提取信息。问题是它一直试图插入“按空间继续”休息,我似乎无法关闭。我知道根据终端中的行数插入了这个中断;手动putty会话根据窗口高度更改滚动的行数。如何更改plink的行为以为我正在运行的查询提供足够的行而不想插入中断?

command-line putty plink
2个回答
0
投票

要自动执行命令,您应该首先运行没有终端仿真的SSH客户端。这样,您就不必处理这样的问题。

当您在Plink的命令行上指定命令时,Plink(类似于OpenSSH ssh客户端)不使用终端仿真:

plink username@host less file.txt

这样,less命令(和类似的)将表现得像简单的cat,因为没有终端。


某些模糊的SSH服务器(如在某些交换机上运行的服务器)不支持Plink用于执行其命令行中指定的命令的SSH“exec”通道。

如果是这种情况,您可能正在使用输入重定向将命令传递给Plink,如:

echo less file.txt | plink username@host 

在这种情况下,Plink使用终端仿真。因此,less将对输出进行分页。

要阻止Plink使用终端仿真,请使用-T switch

echo less file.txt | plink username@host -T

0
投票

我发现的最好的解决方案是将命令发送到文本文件中的plink,如下所示:

plink username@host -pw password < commands.txt

我遇到的最后一个问题是这样做会导致它输出一个正常的会话,包括启动消息,它为我精心设计的查询结果添加了很多行。在我的情况下,这相对容易解决,因为我想要的数据行以整数开头,其他行都以混合字符开头,因此我可以构建一个简单的“if%A equ +%A”检查来清除无用的信息。

对于那些感兴趣的人,这就是我的单行命令:

for /f "tokens=1,2,3,7" %A in ('plink user@host -pw pass ^< commands.txt') do @if %A equ +%A for /f "tokens=2 %E in ('plink user@host -pw pass "command using %C from first command"') do @if not %D == %E @echo %B %C %D %E >> outputfile.txt

它拉出一个列表并按上述方法对其进行过滤,然后使用列表的每一行运行第二个命令来比较特定的信息位。如果发现不匹配,则相关信息将丢弃在输出文件中。

现在,如果我能弄清楚如何构建可以使用内联的变量提示。 Windows 10以不同的方式处理它们,它们不像以前的版本那样工作。

(是的,这在批处理文件中很容易,但是荒谬的安全策略阻止我运行批处理文件,这会使我的工作变得更加容易。所以我构建了像这样的怪物。)

© www.soinside.com 2019 - 2024. All rights reserved.