対話的にコマンドを送受信するには?

このQ&Aのポイント
  • FreeBSD 5.3のIPFWの設定を隣接したWindowsマシンからリモートでさせようとしています。現在はWeb上からリモート設定が可能な状態となっており、sudoコマンドを使ってのリモート操作です。しかし、対話的に通信する必要があるため、実現できません。
  • BSDマシン上で「ipfw flush」とコマンドを打てばルールはすべて破棄されますが、「sudo ipfw flush」とすると確認メッセージが表示されてしまい、実現できません。
  • CGIを使用して対話的にコマンドを送受信する方法について教えてください。
回答を見る
  • ベストアンサー

対話的にコマンドを送受信するには?

FreeBSD 5.3のIPFWの設定を隣接したWindowsマシンからリモートでさせようとしています。 apacheを入れ、CGIを使って、現在はWeb上からリモート設定が可能な状態となっています。 sudoコマンドを使ってのリモート操作です。 リモートでルールを破棄しようとしているんですが、できずにいます。 BSDマシン上で「ipfw flush」とコマンドを打てばルールはすべて破棄されていましたが、 「sudo ipfw flush」とすると「are you sure?[yn]」と確認されるので ここで「y」とするとルールが破棄できます。 ですが、これをWeb上からリモートでしようとすると、対話的に通信する必要があるため、実現できません。 「sudo ipfw flush」というコマンドは送信できますが、その後に対する「y」というコマンドが送信できません。 こういった、送ったコマンドの返答に対してさらにコマンドを送るといったような、 対話的にコマンドを送信するにはCGIではどのようにしたらいいでしょうか? 一度、「sudo ipfw flush」と送ってしまうと、Web上ではフリーズしてしまい、 その後はapacheをストップして再起動しないと動作がおかしくなってしまいます。 CGIで対話的にコマンドを送受信するにはどのようにすればいいのでしょうか? チャットのようにすればいいのでしょうか?

  • CGI
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

「-f」オプションを使いましょう。 詳しくはipfwのマニュアルを参照してください。 「sudo ipfw -f flush」

usui323
質問者

お礼

回答ありがとうございました。 無事解決しました!

関連するQ&A

  • sudoコマンドについて。

     sudoコマンドについての質問です。 OSはFreeBSD 5.2です。  sudoコマンドというのは、初めにユーザのパスワードを聞いてきますよね。 っで、BSD上で実行するときはパスワードを入力すれば問題ないのですが、隣接したマシン(Win2000)のWeb上からCGIを使って実行しようとすると、 パスワードでとまってしまい、Webからは実行できなくなってしまいます。 BSD上でパスワードを入力して、その後5分間は(デフォルトのままなので)Web上からでも自由にsudoコマンドが使えます。 ですが、Webを使うにはBSD上でパスワードを入力する必要があるので、この作業もWebで全てさせたいと考えています。 ログイン画面のようなものを作って、sudoコマンド時のユーザーパスワードを入力してログインさせて以降は時間を気にせずsudoが実行できるようにしたいと思っています。 ですが、CGIでフォームを作ってどのようにすればいいでしょうか? 例えば「sudo ipfw show」と現在のIPFWのルール設定を見ようと思ったら 「Password:」と聞いてくるのでそれに対してパスワードを送信しなくてはいけないわけですが、 Web上のテキストボックスに「sudo ipfw show」として送信すると、止まってしまいます。 そのままフリーズのようになってしまい、その後パスワードを入力することができません。 CGIでサーバとの対話的通信(?)のように行ったり来たりの通信をするには どのようにすればいいのでしょうか?

  • root権限が必要な場合の外部実行方法は?

    CGIを使って、Web上からIPFWの設定をリモートでさせようとしています。 IPFWなどのroot権限がないと設定が不可能なものをWeb上からCGIを使って設定させようとすると apacheのエラーログに「ipfw: socket: Operation not permitted」などとなってしまい、 うまく実行できません。 root権限が必要なものをsystemコマンドで外部から実行させる場合、どのようにしたら実行できるのでしょうか? ファイルの実行権などはchmodコマンドで変えたりしているのですが・・・。

    • ベストアンサー
    • CGI
  • 隣接したマシンのWeb上からBSDルータのシェルスクリプトを実行させるには。

    現在、BSDをルータにして、ブロードバンドルータのように隣接したWindowsマシンからWebで IPFWの設定をできるようにしようと考えています。 そして現在、独自のルールをシェルスクリプトで作成し、case文でそのコマンドを実行すると そのルールが設定されるようになっています。 例えば [Tt][Ee][Ll][Nn][Ee][Tt])    add allow tcp from any to any 23 setup    ;; という風にあって「sh ./rules.sh telnet」で実行したらルールが設定されます。 これを隣接したマシンのWeb上でやらすために、このルータにapacheとperlを入れました。 CGIを使ってやらせようと思っています。 今は、隣のWindowsマシンからBSDルータにアクセスしてtelnetのチェックボックスとOKボタンを表示させています。 これにチェックを入れ、OKボタンをクリックさせたときにこの「sh ./rules.sh telnet」というコマンドをBSDルータ上で実行させたいとおもいます。 しかし、その処理がわかりません。 どうやってこのコマンドをBSD側に送信して実行させることができるのでしょうか? 今は、CGIでチェックを入れてOKしたら「telnet」がチェックされたという情報を表示するだけの状態です。 実際にBSD側にコマンドを送るにはどうしたらいいでしょうか?

  • ウェブブラウザからウェブサーバを再起動するには

    ルートでウェブサーバを再起動させるには、ルート権限で次のようにコマンドに打ち込み実行すれば大丈夫です。 # service httpd restart しかし、個人ユーザからではうまくいきません。 $ service httpd restart そこで、sudoを使って実行することにしました。(visudoで適当に編集します。) $ sudo service httpd restart ちゃんと実行できました。 しかし、ここで問題があります。ウェブブラウザからユーザ名apacheとして実行すると、ウェブサーバは停止してしまい、それから起動することはありませんでした。(もちろん、sudoできるように、visudoで適当に編集をしています。) まとめると、一般ユーザからsudoを使ってウェブサーバを再起動させられるのに、ウェブブラウザ(ユーザ名: apache)からはどうしてできないのでしょうか。そして、どのようにすればウェブブラウザからウェブサーバを再起動させられるのでしょうか。

  • LINUXのユーザ追加スクリプト

    Linux上のApacheにおいて、Web上の公開フォームからPOSTされたユーザ名とパスワードで新規のLinuxユーザを作成するスクリプトをPHPかCGIで作ろうとしています。 しかし、なるべく”sudo”を使わない方法を考えているところで、止まっています。 サンプルコードを教えてください。

    • 締切済み
    • PHP
  • sudoでシェルスクリプトを実行させたい

    /usr/bin/sudo を使って、xxx.shを実行させたいので、設定でxxx.shを許可しました。 その後Apacheで動くCGI(perlスクリプト)から、``を使って実行させようと考えています。 このときにこのxxx.shがうまく動きません。多分シェルにアクセスできないのだと思いますが、どうしたらこのスクリプトをroot権限で動かす事ができるようになるのでしょうか。関係あるかどうかわかりませんが、xxx.shの中身はディレクトリ作成コマンドなどです。ネットで検索したら、シェルスクリプトだけ許可にすればよいとあったのですが・・。セキュリティ的には/bin/shを許可するのはまずそうな気がするのですが、こちらを許可してもよいものでしょうか。 環境等 xxx.sh 755 所有者(user1) Apache実行ユーザ (apache) CGIの実行ユーザ(apache?) 挑戦したコマンド(とアパッチのログ) `/usr/bin/sudo sh ./xxx.sh`; ->パスワード求められます (/bin/shの権限がない?) `/usr/bin/sudo ./xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) `/usr/bin/sudo フルパス/xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) 不足の点などあればご指摘ください。

  • ApacheとPerlを別のサーバーに

    以下のような構成は可能でしょうか? 両方ともUNIXサーバーです。 Webサーバー(IP:192.168.0.1)と、 APLサーバー(IP:192.168.0.2)があり、Webサーバーには、Apacheを入れ、APLサーバーには、Perlを入れます。 Webサーバーは、HTML(CGI)を表示する画面機能のみ、APLサーバーにはCGI(Perl)のプログラム(この中でシェルをキックしたりもします)をおきます。 このようにWebサーバーでAPLサーバーのCGIを起動することは可能でしょうか? 会社の上司からの注文なんですが、APLサーバーにはapacheを入れることは不可。WebサーバーにCGI(Perl)を置くとAPLサーバーで起動するシェルをキックするプログラムや、計算結果などをいちいちリモート(rsh、rcpコマンドなど)で送らなければいけないので不可。とのことです。 このような構成が可能である場合の設定の仕方、また不可能であれば、それを可能にするための方法など、ご教授いただければと思います。 よろしくお願いいたします。

  • MACのローカルでのCGI起動方法について

    MACについてはあまり詳しくなく、困ってしまったので質問させていただきます。 現在MACのローカルにてCGIを起動させようと思っております。 そこでいろいろなサイトを見て設定したのですが行き詰ってしまいました。 現在の設定は「httpd.conf」は主に下記サイトを参考に修正 ■http://homepage.mac.com/dnagase/macosx/perlcgi.html さらに諸事情によりCGI-BIN以外でもCGIを動かしたい為下記サイトの6-2を参考に修正 ■http://szdy.info/docs/apache_on_osx/ しました。 WEB共有はしたので「http://127.0.0.1/」でApacheの初期画面は表示されました。 ですが、ユーザーローカルの「http://127.0.0.1/ユーザー名/」が表示されません。 また「ユーザー名.conf」をTerminalのcpコマンド?にてローカルに落とし、 修正後「sudo cp」にて上書きして、再度cpコマンドでローカルに落とすと修正が反映されていませんでした。 最終的には、一つのフォルダへ格納したCGI(出来ればPHPも)とHTMLがTerminalのコマンドを使わずに追加、削除出来てブラウザから見ることが出来る状態にしたいです。 いろいろ試したのですが解決出来ませんでしたので何か解決方法、試す方法はないでしょうか。 もちろん元々のApache以外のサーバーソフトでもぜんぜんかまいませんのでどうかよろしくお願いいたします。

    • 締切済み
    • Mac
  • IPFWの設定について。

    現在、DMZの構成でネットワークを組んでいます。 学校の教室内に小さなLANを作っているので、このLANを出たとしても そこが教室内ネットワークとなるので実際はそこから外にでて初めてインターネットに 接続できるようになっています。 Internet ⇔ 教室内ネットワーク ⇔ LAN(5台) このLAN内のルータとなるマシンはFreeBSDとなっており、ここでNATによるアドレス変換を行っています。 そして今、このルータマシンにIPFWでファイアウォールを作りました。 基本的には、 内部のPCからInternetに接続させる 教室内ネットワークからのアクセスは基本的に防ぐ 教室内ネットワークからのWebサーバに対するアクセスは許可 FTPサーバに対しても許可する SSHも許可する というような感じで、HTTPの80番ポートを空けていれば内部LANからインターネットに 接続できるかと思いましたが、IPFWを実行するとインターネットすらのぞけなくなりました。 ほかに、FTPの20、21ポートやSSHの22をあけていても通じません。 IPFWの設定を無効にしていればインターネットなど通信は自由にできるのですが・・・。 とりあえず、まずはIPFWでパケットを制御しつつも最低でもインターネットぐらい接続できる状態を確保したいと思っています。 この場合においてIPFWのルールはどのように書いたらいいのでしょうか? 単純に80番ポートをあければいいというものではないのでしょうか? また、今現在インターネットに接続できないというその原因にはどのようなものがあげられるでしょうか? おねがいします。m(-_-)m

  • at コマンドで同時刻に登録されたプロセスの実行について

    このカテで良いのか迷いましたが質問させていただきます。 タイマー設定でメールを送信したいと思っています。 Webアプリケーション(Apache+PHP)で利用者が時刻を指定して 登録をすると、指定した時刻にメールが送信される仕組みです。 そこで、登録が発生したタイミングで at コマンド(シェル)を 発行し、atキューに溜める方式を取ろうと考えています。 仮に、同一時刻に数千件のat コマンドが登録された場合、 - それらのコマンドは同時に実行されるのでしょうか? - それとも登録された順等にシーケンシャルに実行されるのでしょうか? 前者の場合、数千件のプロセスが一時に同時に起動してしまう 自体は避けたいと思うので他の策を練ろうと思います。 ちなみにMTAはqmailです。 また、Webアプリケーションからの登録でタイマーメール送信をする際の at 登録以外の方式がありましたらご教授ください。 よろしくお願いします。

専門家に質問してみよう