リモートWindowsコンピュータでbashスクリプトを実行する

リモートWindowsコンピュータでbashスクリプトを実行する

ローカルLinuxシステムのリモートWindowsシステムでbashスクリプトを実行する予定です。これを行うには、Windowsシステムにローカルにログインしてbashスクリプトを実行する必要があります。

まずこれは可能ですか?では、どうすればよいですか?

答え1

これは、WindowsシステムにCygwinおよびopensshサーバーをインストールすることによって実現できます。 Cygwinにはスクリプトを実行できるbashが付属しており、opensshをCygwinにインストールしてWindowsシステムにリモートでログインできます。ログインする前に、scpを使用してスクリプトをWindowsシステムに転送してから、SSHを使用して直接実行できます。

openssh は cygwin インストーラを使用してインストールできます。詳細な手順については、次を参照してください。http://www.howtogeek.com/howto/41560/how-to-get-ssh-command-line-access-to-windows-7-using-cygwin/

答え2

私はこれがマイナーな問題である@slmに同意します。実際、Unixシステムに独自のリモートアクセスプロトコルが含まれているように、Windowsには独自のリモートアクセスプロトコルが含まれています。 Microsoft Powershellは、Vistaに導入されて以来、多くの進歩を遂げており、Windowsシステムでシェルスクリプトが実行することを期待していることのすべてではなく、ほとんどを実行できます。例えば、技術ネットワーク:

Windows PowerShellリモート機能は、WS-ManagementプロトコルとWindowsでWS-Managementを実装するWindowsリモート管理(WinRM)サービスでサポートされています。 Windows 7以降を実行しているコンピュータにはWinRM 2.0以降が含まれています。以前のバージョンのWindowsを実行しているコンピュータでは、WinRM 2.0以降(サポートされている場合)をインストールする必要があります。現在、リモート機能は、Windows Vista Service Pack 1以降、Windows 7、Windows Server 2008、およびWindows Server 2008リリース2でサポートされています。 

もちろん、Linuxクライアントでこれを使用するといくつかの問題が発生する可能性がありますが、仮想マシンがこれらの問題のほとんどまたは一部のみを解決することを願っています。netcatまたはssh代理人。好奇心に5分ほど検索をしてみると、もう分かりましたね。ファッシュプロジェクト、たとえその有用性を主張しません。

修正する:

その軽い好奇心をもう一度満たす過程で、もう一度Pash sourceforge pageそして少し探してみました。これを行いながら関連内容を発見しました。おすすめ商品含めるだけでなくwinexe@slmがお勧めしますが、私が聞いたことがない別の名前は次のとおりです。win-bash。説明から:

他人とは違うbashWindowsポート(例: cygwin bash )、これwin-bash 特別な環境やDLLは必要ありません。持つバイナリファイルは1つだけです。それはすべてです。

目標win-bashこのプロジェクトは、Windows移植を完了することです。完全な機能を提供しますbash.exeWindows NTおよびその派生物のバイナリ。win-bash入力シェルとして使用できるだけでなく、UN*X シェルスクリプトを実行するためのインタプリタ

上記でこの問題について重要だと考えるのは、スタンドアロンの特性です。ライブラリまたはレジストリの依存関係がない場合は、Windowsの実行可能ファイルである可能性があります。リモート実行- たとえば、ファイル共有から - インストールは不要です。したがって、既定の Windows プロトコルを使用して (おそらく Windows プロトコルを使用または含めて) コンピュータにリモートでアクセスできると考えることができます。winexe)、走るpowershellまたはnet useシェルスクリプトを実行してファイル共有をマッピングするコマンドwin-bash,その後、共有マッピングを解除して接続を終了します。個々のファイルをコピーする必要もありません。リモートホストへ。

可能だと言うが、効果的ですか?わかりません。調べることもできますが。

現状維持が好きですウィンペイ私のシステムのイメージEFI使用できるようにパーティションを分割します。rEFInd(そして起動も可能です。ありがとうございましたiPXE1つまたは2つを破ります。)これまでは、デフォルトのWindowsインストールが開始されないようにカスタマイズしてオンに設定しました。cmdエージェントのプロンプトnetcat, なぜならcygwin私にとっては、報酬がほとんどない雑用のように見えましたが、今は以前は軽い好奇心が高まっているので、私の経験をレポートに追加した後にレビューを持って戻ることができます。着るビデオ。

アップデート終了

@slmが言及されていますwinexe、今は興味がありますが、以前は聞いたことがありません。彼はまた言及したwmicあなたが使うことができるツールとして、これは私自身もよく使うツールです。これは、SQLと同様の構文を使用してレジストリバックエンドへの非常に強力なアクセスを提供します。

あなたが処刑したいのか知っています.cmd特定のルールに基づくスクリプトは、WindowsタスクマネージャとWindowsグループポリシーで使用でき、これらの両方にある程度影響を与える可能性があると思います。wmic.

あるオペレーティングシステムから別のオペレーティングシステムにコードを移植することが必要なだけ頻繁に発生しないのには理由があるという言葉で終わります。本質的に問題があるからです。異なるオペレーティングシステムは異なるため、動作が異なります。sshたとえば、少なくとも私の経験では、Windowsの階層的な権限は処理できず、システムレベルのアクセスが必要な場合やまったく機能しませんが、netcat私が実行しているユーザーアカウントの権限レベルを受け入れているようです。上記のように、Powershellは基本的にすべてをオブジェクトとして扱うため、Unix環境で使用したように文字列を解析するために使用される場合は非常に退屈なツールになる可能性があります。頑張ってください。

答え3

これを使用してリモートsshSSHサーバーにアクセスし、コマンドを実行します。

例えば

ssh [email protected] command

WindowsコンピュータをSSHサーバーに設定する方法がわからない場合は、Windowsフォーラムの質問です。しかし、すべての人のアドバイスは、cygwinを使用してSSHを開くのが良いアイデアだということです。

答え4

おそらく、Bashスクリプトで使用するためにCygwinを使用しないように説得したいと思います。とにかく、スクリプトはCygwin + Windows上で実行できるように高度にカスタマイズする必要があります。これはとても似ていると思います。XYの問題

代わりに、Windowsのデフォルトのスクリプト言語で書かれたスクリプトの実行を指示する方が良いでしょう。 Windowsにはさまざまなオプションがあり、.cmd単純なファイルからVBスクリプトまで何でも使用できます。

その後、次のコマンドを使用してLinuxシステムでこれらのソリューションを実行できます。winexe、スクリプトにアクセスできることを確認する以外に、Windowsシステムに何もインストールする必要はありません。

はい

$ winexe -U "<user>%<pwd>" //192.168.1.2 'wmic bios get serialnumber'
$ winexe -U "<user>%<pwd>" //192.168.1.2 'C:\path\to\script.cmd'

引用する

関連情報