ローカルLinuxマシンからリモートWindowsシステムでbashスクリプトを実行することを計画しています。このためには、ローカルマシンからWindowsマシンにログインして、bashスクリプトを実行する必要があります。
まず、これは可能ですか?はいの場合、どのようにそれを行うことができますか?
これは、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/ を参照してください=
@slmに同意しますが、これは境界線上の質問です。実は、Windowsには独自のリモートアクセスプロトコルが組み込まれており、Unixシステムには独自のプロトコルが組み込まれています。 Microsoft Powershellは、Vistaで導入されて以来、大幅に成熟しており、Windowsシステムでシェルスクリプトが実行することを期待するすべてのことを実行できるわけではありません。たとえば、 technet によると:
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 Release 2でサポートされています。
もちろん、これをLinuxクライアントから利用するといくつかの問題が発生しますが、仮想マシンでそれらのほとんど、またはnetcat
またはssh
プロキシ。私の穏やかな好奇心に5分の貢献と検索エンジンの使用、そして Pashプロジェクト を知りましたが、その有用性については何も主張しません。
UPDATE:
その穏やかな好奇心を再び楽しませる過程で、私は _Pash sourceforge page
_ をもう一度訪れ、もう少し閲覧しました。その際、関連するRECOMMENDED PROJECTSには、@ slmが推奨するwinexe
だけでなく、しかし、もう1つ、呼び出されたことは聞いたことがない _win-bash
_ 。説明から:
Windows用の他の
bash
ポートとは異なり(例:_cygwin bash
_)、_win-bash
_は、特別な環境やDLLを必要としません。1つのバイナリだけです。_
win-bash
_プロジェクトの目標は、Windowsへの移植を完了し、を完全に提供することですWindows NTおよび派生システム用の機能_bash.exe
_バイナリ。 _win-bash
_は入力シェルとして使用でき、インタプリタを使用してUN *を実行できますXシェルスクリプト。
この質問に関して私が上記について重要だと思うのは、そのスタンドアロンの性質です。ライブラリまたはレジストリの依存関係がない場合、Windows実行可能ファイルはリモートで実行できます-たとえばファイル共有から-インストールなしで。したがって、ネイティブのWindowsプロトコルを使用してマシンにリモートでアクセスすることが考えられます(winexe
も含めて(または含めて))、を実行します。 powershell
または_Net Use
_コマンドを使用してファイル共有をマップし、_win-bash,
_次に、共有のマップを解除して接続を終了します単一のファイルでさえコピーする必要はありませんリモートホストへ。
考えられると言いますが、それはうまくいきますか?わからないかもしれませんがただ見つけなさい。
現在のwin peイメージをシステムの[〜#〜] efi [〜#〜]パーティションに保持したいので、 rEFInd
に利用できます(そしてiPXE
ハックのおかげで起動できます)。これまでのところ、デフォルトのWindowsインストールの開始をブロックするようにカスタマイズし、cmd
プロンプトを開くように設定しました_netcat,
_cygwin
は私にはほとんど利益をもたらさない大変な仕事であるように見えましたが、今では以前の穏やかな好奇心が高まっています...私はおそらくそれを私のpe画像に追加した後、私の経験に関するレポートを返すでしょう。
END UPDATE
@slmはwinexe
について言及していますが、今は聞いたこともありませんが、今は興味があります。彼はまた、使用できるツールとしてwmic
について言及し、それは私が頻繁に使用したツールです。これにより、レジストリバックエンドへのかなり強力なアクセスが許可されますSQLに似た構文を使用します。
特定のルールに基づいて_.cmd
_スクリプトを実行したい場合は、WindowsタスクマネージャとWindowsグループポリシーがあり、どちらも私が信じているように、 _wmic.
_を介して少なくともある程度影響を与えることができます
最後に、あるオペレーティングシステムから別のオペレーティングシステムへのコードの移植は、理由があるため、私たちが望むほど頻繁には行われないと言います。それは、その性質上問題があります。少なくともオペレーティングシステムが異なると、少なくともそれらが異なるため、動作は異なります。 ssh
たとえば、少なくとも私の経験では、Windowsの段階的なアクセス許可を処理することができず、システムレベルのアクセスが必要であるか、単に機能しませんでしたnetcat
は、それを実行したユーザーアカウントのアクセス許可レベルを受け入れているようです。上で述べたように、Powershellは文字列の解析に使用すると非常に退屈なツールになる可能性があります。Unix環境では慣れているかもしれませんが、Powershellはすべてを独自のオブジェクトとして扱うためです。とても幸運。
ssh
を使用してリモートsshサーバーにアクセスし、コマンドを実行します。
例えば
ssh [email protected] command
WindowsマシンをSSHサーバーとして設定する方法を知りたい場合は、Windowsフォーラムへの質問です。ただし、cygwinとopen sshを使用することをお勧めするのは良い考えです。
Cygwin + Windows上で実行できるように高度にカスタマイズする必要があるBashスクリプトを処理するためだけにCygwinを使用しないようにするでしょう。これは XY問題 によく似ています。
代わりに、Windowsネイティブのスクリプト言語で記述されたスクリプトの実行を指示するほうが適切です。 Windowsには、単純な.cmd
VBスクリプト内の何かまでのファイル。
これらのソリューションはいずれも winexe
を使用してLinuxシステムから実行できるため、スクリプトにアクセスできることを確認する以外に、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'