私は次のことをしようとしています:
1)Windowsマシンからリモートマシン1、2、および3(すべてLinux)でシェルスクリプトを実行します。
2)私のWindowsマシンには、次のように使用しているplinkがあります。
plink -i <my_private_key> [email protected] -t "bash <script_loc> args &"
そうすると、期待したプロセスが開始されません。 machineX(1,2、or3)にリモートログインして、次のように入力することで確認しました。
ps -A -F | grep -i "whatever"
コマンドラインで次のように入力して起動できます。
cmd /c start plink -i <my_private_key> [email protected] -t ""bash <script_loc> args ""&""""
ただし、これは新しいターミナルを開き、Windowsマシンからログオフすると、これらは終了することを意味します。
私の目標は、これらのスクリプトをリモートで開始し、バックグラウンドプロセスまたはデーモンとして実行し続けることです。コマンドラインから何が実行されるかがわかっているので、pidなどを見つけることができます。
これはサービスを作成せずに実行できますか?
よろしく、
Plinkを実行している場合は、PSホストの1つ(console/ISE/VSCode)でplinkコマンドを実行しているだけなので、これを行うためにPSリモーティングを使用していません。これはPSの問題ではありませんが、PSで実行および実行する方法です。私は問題なくLinuxボックスに毎日plinkしますが、2番目のコマンドとstartコマンドの問題で述べたように。
PSコンソールの1つを使用している場合は、実行コマンドを指定する必要があります。外部.exeの場合は、exeを完全に修飾する習慣を身に付ける必要があります。
たとえば、ここでは、すべてのLinuxボックスに対してこれを正常に行う方法です。つまり、&(アンパサンド)は-文字列をコマンドとして実行します。基本的には、cmd.exe startを呼び出して実行しているのと同じことですが、追加のターミナルウィンドウはありません。
# Using PowerShell and Plink for Linux remote management
# Example
$PlinkPath = 'D:\Tools\plink.exe'
$linuxhostname = 'SomeLinuxHostName'
$linuxusername = 'SomeLinuxUserName'
$LinuxSessionName = 'LinuxSessionNameName' # PuTTY Saved session name
$GetIptablesNat = & $PlinkPath -load $LinuxSessionName 'Sudo -s iptables -L -nv --line-numbers -t nat';$GetIptablesNat
$GetIptablesFilter = & $PlinkPath -load $LinuxSessionName 'Sudo -s iptables -L -nv --line-numbers -t filter';$GetIptablesFilter
$RestartIptablesService = & $PlinkPath -load $LinuxSessionName 'Sudo -s service iptables restart';$RestartIptablesService
# Network statistics
$GetNetworkStatistics = & $PlinkPath -load $LinuxSessionName 'Sudo -s netstat -tN';$GetNetworkStatistics
# Connectivity check
(
'SomeLinuxHostFQDN','SomeLinuxIPA'
) | % { Test-Connection -ComputerName $_ }
# From Linux NAT Gateway
$TestConnectivity = & $PlinkPath -load $LinuxSessionName 'Sudo -s ping SomeHostIPA';$TestConnectivity
PSジョブの目的であるバックグラウンドで処理を実行したい場合。
この記事を参照してください:
https://codingbee.net/tutorials/powershell/powershell-running-tasks-in-the-background
並列プロセスと実行スペースに関するPSヘルプファイル情報も参照してください。
Get-Help -Name about_Jobs
Get-Help -Name about_Parallel
Get-Help -Name about_PSSessions
Get-Help -Name about_PSSession_Details
Get-Help -Name about_Workflows
Get-Help -Name about_WorkflowCommonParameter
PowerShellランスペースの使用の開始
しかし、私はPlinkでこれを試していません。
ただし、Ciscoスイッチの場合でも、PSとPlinkの使用例に関する記事はたくさんあります。
Plink.exeを使用したSSHPowerShellのトリック
http://www.virtu-al.net/2013/01/07/ssh-powershell-tricks-with-plink-exe
SMAを使用してSSH対応のLinuxホストを管理するためのサンプルPowerShellモジュール
これは、SSH対応のLinuxホストを管理するためのサンプルのWindowsPowerShellモジュールです。これは、SSHコマンドを実行するためにPuTTYツールPlink.exeをラップします。
https://gallery.technet.Microsoft.com/scriptcenter/Sample-PowerShell-module-8d961a1c
また、PSにはSSHモジュールがあるため、Linuxクライアントと相互運用するためにPlinkを特別に使用する必要はありません。
PowerShellでSSHを使用する
https://www.thomasmaurer.ch/2016/04/using-ssh-with-powershell
Posh-SSH 2.0.2
リモートホストに対してコマンドを実行するためのSSHおよびSCP機能を提供します。
必要なのは、PIDファイルをフォークして書き込むリモートスクリプトだけです。
これを行うには多くの方法があります。
どのクライアントを使用するか(plink、PuTTY、ssh、またはこれまでに何でも)は関係ありません。
限り:
私はこれを正確に試したことがありませんが、 ここに例があります 0.5分のGoogleセッションで見つけました。