質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Active Directory

Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

286閲覧

Webページからの仮想マシンリセットについて

ayuzer

総合スコア15

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Active Directory

Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2019/03/28 23:55

編集2019/03/29 05:16

前提・実現したいこと

■概要
ユーザーより、Webページを経由してサーバー上に配置されているスクリプトを実行させるような
ことはできますでしょうか。実現するためのお奨めの方法があれば(ヒントだけでも結構ですので)ご教示いただけますと幸甚です。

■前提
クラウド提供されているVDIサービスを利用しています。
このVDIサービスでは、管理者向けにいくつかスクリプト(VBSからリモートでPowershellを呼び出す方式)が用意されています。
このスクリプトの中に、仮想デスクトップ(以下VD)の電源を強制リセットするものがございます。(引数としてVD名を渡します)

  ex:> call.vbs reset.ps1 VDNAME

 これまでは、VDがフリーズするなどした場合、ユーザーから管理者へ連絡をもらい
上記管理者用スクリプトにて、電源をリセットする運用をしてきました。
しかし、都度管理者へ依頼しなければならない状況が煩雑なので、ユーザー自身でリセットを行えるような
仕組みを作りたいと考えております。

 上記を実現するために、まずはPowershellで以下のような機能をもったスクリプトを作成しました。
1.ActiveDirectory のドメインコントローラーへ、ユーザーが入力した認証情報を渡し、認証判定を行う
2.認証されたら、ユーザー名とVDの紐づけが記載されたEXCELファイルから、対象ユーザーのVDの一覧を取得する
3.取得された一覧をユーザーフォームで、ラジオボタン付きで表示し、リセットしたいVDを選ばせる
4.選ばれたVD名を引数に、管理者向けのスクリプトを実行させる

発生している問題

 ユーザーによってはVDをひとつしか割り当てられていない者もいて
そもそも上記のPowershellスクリプトを実行できないケースがあることに気が付きました。
ユーザーにはシンクライアント、VD以外にもipadが支給されているため、これを利用して
WEB経由で上記リセットを行うことができないかと考えております。
できれば、前述したPowershellスクリプトを流用する形で、認証情報をWEB経由でサーバーへ渡し、
サーバーからリセット対象VD一覧をWEBのフォームでユーザーに返し、更にユーザーに選択されたVD名をWEB経由でサーバーに渡し、
最終的にはリセットスクリプトを走らせる、といったことができればベストです。

試したこと

 WEBで調査したところ、PowershellはCGIとして動作するという記述があったので、
これを経由してスクリプトを呼び出すことを試みたのですが、 502.2 のエラーが発生してしまい
うまくいかない状況です。

補足情報

 ■環境について
本番環境については、おいそれといじることができないので
検証環境にWindows server 2012 を立てて、ActiveDirectoryとIISをインストールし、
前述したPowershellスクリプトをhttp://localhost/***.ps1 として呼び出したところ
エラーとなりました。

 ■技術レベルについて
私はWindows Server の運用チームのメンバーで、これまで触ってきたのは
VBA/VBS、BAT、Powershell ぐらいで、WEB関連のコーディング経験はございません。
このようなレベルの人間でも対応できるような方法をご教示いただけると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

over

2019/03/29 02:27 編集

IISはCGIを実行できる環境にしているのでしょうか?502.2エラーであることから、IISがCGIを許容する環境になっていないと推測しています。
ayuzer

2019/03/29 05:15

> over 様  コメントいただきありがとうございます。後出しで申し訳ございません。  単純に以下のような記載をすれば現在の日付が呼び出せるので、CGIそのものは機能していると  思われます。 ============================ Echo "Content-Type: text/html" Echo "" Echo "<HTML><BODY><TABLE>" Echo "<TR><TD>現在の日付</TD><TD>$(Get-Date)</TD></TR>" Echo "</TABLE></BODY></HTML>" ============================
over

2019/03/29 06:05

そうですか。ではスクリプトの内容によりますね。
guest

回答1

0

ベストアンサー

ざーっとしか読んでませんが、各言語にサーバーコマンドを実行できる機能があります。
PHPでいえばexec(),system()など

これを経由してスクリプトを呼び出すことを試みた

どのような環境でどのようなコードを書かれたのか提示いただけるともう少し具体的な回答が得られると思います。

投稿2019/03/29 00:10

m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ayuzer

2019/03/29 02:09

> mts10806様  早速のご回答ありがとうございます。  浅識で恐れ入ります。PHPにそのような要件を満たせるようなコマンドが存在するのですね。  調べてみたいと思います。ありがとうございます。  環境についてご説明できておらず失礼しました。  本番環境については、おいそれといじることができないので  検証環境にWindows server 2012 を立てて、ActiveDirectoryとIISをインストールし、  前述したPowershellスクリプトをhttp://localhost/***.ps1 として呼び出したところ  エラーとなりました。  以下のようなコードをPS1に記載すると動くので、呼び出し方がまずいのかも、と思いつつも  どのようにしてよいのか皆目見当もつかず。。 ============================ Echo "Content-Type: text/html" Echo "" Echo "<HTML><BODY><TABLE>" Echo "<TR><TD>現在の日付</TD><TD>$(Get-Date)</TD></TR>" Echo "</TABLE></BODY></HTML>" ============================
m.ts10806

2019/03/29 02:11

PHPだけではないのでご利用予定の言語で調べてみてください。 > 環境についてご説明できておらず失礼しました。 この内容は質問本文に追記された方が良いかと思います。 あとエラーメッセージやエラーログの内容ですね。
ayuzer

2019/03/29 05:19

>mts10806様  ご回答ありがとうございます。承知しました。  ご指摘いただき、切り分け不足を痛感しましたので、もう少しPowershellCGIの部分も  切り分けしてみつつ、サーバーコマンドの実行について他の言語での調査をしてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問