c# SSH创建.命令换行语法

本文关键字:换行 语法 命令 创建 SSH | 更新日期: 2023-09-27 18:06:37

我绝对是c#新手,但学习它是为了在工作中拾取别人留下的东西,所以如果我问一些愚蠢的问题(我认为这是一个简单的问题),请温柔。我正在使用SSH。. NET和当前的代码没有错,但之前的人写的方式可能会在另一边留下打开的ssh连接。

当前工作代码正常打开SSH会话,但使用类似于以下内容在远程系统上运行命令:

Stream.Writeline("part of the command")
Stream.Readline();
Stream.Writeline("second part of command")
Stream.Readline();
Stream.Writeline("last part of command")
Stream.Readline();

这可以正常工作并收集数据,但我已经多次看到SSH连接在远程系统上保持打开状态。我想做的是通过create.command将所有这些都发送到单个命令中,例如:

command1 = client.CreateCommand("full command to run")
result = command1.Execute()

我的问题是我想在远程系统上运行的命令需要返回才能运行,这是一个数据库命令:

mysql -u user <<EOF
select COUNT(*) from table1
go
EOF

我想做什么:

command1 = client.CreateCommand("mysql -u user <<EOF'nselect COUNT(*) from table1'ngo'nEOF'n")

如何在Create.Command中插入返回值?我假设是这样,看到没有理由不这样做,但我很难找到正确的语法来发送数据库命令,该命令需要通过Create.Command在每行之后返回。我试过用'n换行,但99%肯定我用错了。

只是为了清楚我使用mysql作为DB的例子,它实际上是一个sybase数据库,但使用语法连接。

c# SSH创建.命令换行语法

你为什么需要休息呢?它们只是为了很好地为人类格式化查询。MySQL不是人类。它一点也不在乎。为什么不这样做呢?

mysql -u user -e 'select count(*) from table1'

你不需要go命令,句号。

如果你想发送多个命令,那么你仍然不需要任何换行符,只需要一个;:

mysql -u user -e 'command1; command2; command3; ....'

使用 ' r ' n 像在这里:

command1 = client.CreateCommand("mysql -u user <<EOF'r'nselect COUNT(*) from table1'r'ngo'r'nEOF'n")