SSH.NET Expect() 意外提示

SSH.NET Expect() Unexpected Prompts

我已将自己的界面写入 Linux,并使用我自己翻译的命令和 Ansible 扩展。我正在使用 Visual Studio 2019,连接到 CentOS,运行 使用最新的 Ansible,同时使用 SSH.NET.

进行连接

因为这是 1000 行代码,这是一个非常高级的 sudo 代码,我正在这样做:

const string Command_Prompt = @"[\?$#]|\[.*@(.*?)\][$%#]";
var promptRegex = new Regex(Command_Prompt);
while(_lastCommand != "exit") {
    _lastCommand = Console.ReadLine();

    _shellStream.WriteLine(_lastCommand);
    var output = _shellStream.Expect(promptRegex);
    Log.Verbose(output);
}

这个选择

[root@localhost ~]#
[root@localhost ~]$
#
$
What is your first name?

我的 Ansible ymls 有 promtps,如果提示有问号,这会很好地工作。如果我期待一些特定的东西,它会很好地工作,因为我可以期待任何我喜欢的东西。但是,有时候,我运行一个linux命令,命令有一个意想不到的提示,这是在等待预期的信息返回。有没有办法做 MRemote、Putty 或 VSCode 终端在未知提示下所做的事情?如果我不知道他们的提示会是什么样子,我真的不能允许其他人使用我的产品。 MRemote、Putty 和 VSCode 终端具体做了哪些 SSH.NET 显然没有做的事情,或者我没有正确使用 SSH.NET?

我说完了,还是走基础吧。

.*\?:|[$#]|\[.*@(.*?)\][$%#]

选择以下

[root@localhost ~]#
[root@localhost ~]$
#
$
What is your first name?: