c# - 通过 Plink 发送 Ctrl+break 序列
问题描述
我正在尝试通过 Plink 自动化远程服务器 shell 命令。我所做的其中一件事就是grep
指挥。
现在假设如果结果很多数据,那么我只想打破命令。
通常从 PuTTY 中,您只需执行Ctrl-C或Ctrl-Break它会破坏命令。
Plink 的替代方案是什么?
解决方案
不要从 C# 应用程序运行 Plink 来实现 SSH。使用 SSH 的本机 .NET 实现,例如SSH.NET。– 它可以让您完全控制连接,并且您不必使用像发送这样的技巧Ctrl+C。
var client = new SshClient("example.com", "username", "password");
client.Connect();
SshCommand command = client.CreateCommand("grep pattern file");
IAsyncResult result = command.BeginExecute();
using (var outputReader = new StreamReader(command.OutputStream))
using (var extendedReader = new StreamReader(command.ExtendedOutputStream))
{
int read = 0;
while (read < 10240)
{
string s;
s = outputReader.ReadToEnd();
read += s.Length;
Console.Write(s);
s = extendedReader.ReadToEnd();
read += s.Length;
Console.Write(s);
}
}
command.CancelAsync();
此外,您可以使用switch在一定数量的匹配后-m
停止。grep
推荐阅读
- python - 如何读取带有换行符的字符串并存储到 Pandas 数据框或 python 列表中
- r - 如何在 Github 的 README 中添加 R-CMD-check 状态
- html - 如何在用户搜索的网站顶部获取信息?
- php - php如何设置不同类型的抛出错误
- javascript - 使用带有 JavaScript 的递归函数来显示键值对的最优雅的方式是什么?
- java - RecyclerView 中的复选框无法正常工作
- azure - Azure Cli 如何为 webapp 启用 Application Insights
- javascript - 如何将 Amazon S3 存储桶中的 javascript 连接到 Amazon 时间服务器?
- c++ - 如何调试linux服务器上的死锁?
- amazon-web-services - 我是否需要为我的免费级别 AWS 账户支付一些费用?我现在该怎么办?