Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PowerShell远程执行Linux应用程序_Linux_Powershell_Ssh_Plink_Ssh.net - Fatal编程技术网

从PowerShell远程执行Linux应用程序

从PowerShell远程执行Linux应用程序,linux,powershell,ssh,plink,ssh.net,Linux,Powershell,Ssh,Plink,Ssh.net,我试图在PowerShell的Linux设备上执行应用程序控制台命令(cslogin)。我使用来自的SSH模块访问Linux服务器。下面是我脚本的快照,我能够建立ssh会话 Import-Module SSH-Sessions $user = "user" $password = "pass" $hostname = "192.168.1.X" C:\plink.exe -ssh -l $username -pw $password $hostname "cslogin" 但是执行

我试图在PowerShell的Linux设备上执行应用程序控制台命令(
cslogin
)。我使用来自的SSH模块访问Linux服务器。下面是我脚本的快照,我能够建立ssh会话

Import-Module SSH-Sessions
$user     = "user"
$password = "pass"
$hostname = "192.168.1.X"
C:\plink.exe -ssh -l $username -pw $password $hostname "cslogin"  
但是执行
cslogin
命令后,脚本将挂起,并显示以下消息:

SEC054设备已连接或断开伪tty,但没有 鉴定


在这一点上,如果我点击回车键,我就能得到应用程序提示,这就是我想要的。我试图理解为什么我的脚本会挂起,以及如何绕过这个问题

据我所知,您实际上并没有在这里使用ssh.net。当然,您可以导入模块,但不必使用
New SSHSession
Invoke SSHCommand
cmdlet,而是可以运行plink进行连接并运行
cslogin
。我承认我没有听说过这个Linux命令,但请记住,plink希望通过SSH连接,执行命令并断开连接-因此您不会得到交互式提示

您可以让plink在Linux服务器上运行脚本,也可以使用
-m
开关让plink读取文件中的命令列表

或者,您可以设置putty保存的会话,然后运行plink以获得交互式会话,但在powershell命令窗口尝试解释plink的输出时,您可能会在该窗口中发现一些异常


有关更多信息,请参见

您只导入
SSH会话
模块,而不实际使用它。然后运行PLink,这与SSH.NET完全无关


纯SSH.NET解决方案类似于:

Import-Module SSH-Sessions
New-SshSession -ComputerName "192.168.1.X" -Username "user" -Password "pass"
Invoke-SshCommand -InvokeOnAll "cslogin"

除此之外,您的PLink解决方案也会这样做。由于不起作用,上面的SSH.NET解决方案也可能不起作用

您的实际问题是应用程序(
cslogin
)需要一个交互式终端(TTY)。默认情况下,PLink不分配一个。我相信SSH.NET也不会。使用PLink,您可以使用
-t
开关强制TTY:

$user     = "user"
$password = "pass"
$hostname = "192.168.1.X"
plink.exe -ssh -l $username -pw $password $hostname -t "cslogin"  

请参阅。

对此感到抱歉,我们正在尝试将此功能与SSH模块和plink一起使用,但忘记删除导入模块SSH会话代码。还尝试了plink-t参数,得到了此->bash:cslogin:command not found如果您使用SSH终端客户端(例如PuTTY)登录,是否可以执行
cslogin
?是的,我可以,无论我使用putty、plink还是SSH模块,我仍然会收到“SEC054设备已连接到或断开连接到伪tty而未进行身份验证”消息。我可以通过点击回车键来传递消息。我想这是一个可能的解决方案,如果我可以搜索消息的输出,然后切换到下一行代码。这篇文章与此类似,可能很有用-你想在这里实现什么,而不是更好地使用putty?