Pro*_*r_D 3 powershell putty plink interactive process
我需要能够在远程设备上创建一个进程并使用 PowerShell 脚本向它发送命令。我需要这样做,因为我在使用命令时会收到提示。我一直试图通过使用 Google 搜索和以下链接来弄清楚如何做到这一点:http : //tartarus.org/~simon/putty-snapshots/htmldoc/Chapter7.html#plink。通过该链接,我意识到在 Plink 中使用带有命令列表的文件将不起作用,原因如下(从该链接复制并粘贴):
您可以在服务器命令行上有效运行的任何非交互式命令,您都可以通过这种方式使用 Plink 在批处理文件中运行。
它说“非交互式命令”,这就是我正在使用的。无论如何,我也尝试使用带有命令列表的文件,但它并没有解决我的问题,因为我基本上需要发出一个命令,等待,然后在提示我时再给出一个。这是我在PuTTY 常见问题解答中找到的内容,基本上是我想尝试的内容:
可能你最好的选择是使用命令行连接工具 Plink。如果您可以将 Plink 作为第二个 Windows 进程启动,并安排您的主进程能够通过管道向 Plink 进程发送数据并从中接收数据,那么您应该能够从您的程序建立 SSH 连接。例如,这就是 CVS for Windows 所做的。
编辑:根据 user2460798 的回答,我尝试了下面的解决方案。我希望使用 PuTTY 并能够以这种方式向它发送命令。我现在的问题是我不知道如何向打开的 PuTTY 会话发送命令。所以基本上这段代码打开了一个 PuTTY 会话并尝试向它写入“ls”命令,但没有任何反应。我不知道“ls”文本的去向。
$procInfo = New-Object Diagnostics.ProcessStartInfo
$procInfo.RedirectStandardOutput=$true
$procInfo.RedirectStandardInput=$true
$procInfo.RedirectStandardError=$true
$procInfo.FileName="putty.exe"
$procInfo.Arguments="-ssh -pw <password> <username>@<device>"
$procInfo.UseShellExecute=$false
$p=[diagnostics.process]::start($procInfo)
sleep -Milliseconds 3000
$p.StandardInput.WriteLine("ls")
Run Code Online (Sandbox Code Playgroud)
不确定是否理解您的问题,但这是我使用 plink 的方式
function plink
{
[CmdletBinding()]
PARAM
(
[Parameter(Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[string] $remoteHost,
[Parameter(Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[string] $login,
[Parameter(Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[string] $passwd,
[Parameter(Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[string] $command)
& c:\Tools\plink.exe -ssh $remoteHost -l $login -pw $passwd $command
return
}
$remoteHost = "192.168.1.1"
$login = "TheUserWhoCan"
$command1 = "/opt/compiere/apache-tomcat-6.0.32/bin/shutdown.sh "
$command2 = "cd /opt/compiere/apache-tomcat-6.0.32/bin && ./startWS.sh"
$command3 = "ps -edalf | grep java"
$passwd = Read-Host "Enter Password for $login"
write-host "Stopping tomcat" -ForegroundColor DarkGreen
plink -remoteHost $remoteHost -login compiere -command $command1 -passwd $passwd
Start-Sleep 10
write-host "Starting tomcat" -ForegroundColor DarkGreen
plink -remoteHost $remoteHost -login compiere -command $command2 -passwd $passwd
write-host "Looking for java processes"-ForegroundColor DarkGreen
plink -remoteHost $remoteHost -login compiere -command $command3 -passwd $passwd
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16398 次 |
| 最近记录: |