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?:
我已将自己的界面写入 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?: