以前過去の質問で見たような気がするのですが、
思い当たるキーワードを打っても打っても出てこないので
申し訳ありませんが質問させていただきます。
cgi を一定の間隔で自動的に実行したいんです。
telnet接続したり、UNIXで操作しないと不可能でしょうか
Perl でやれればありがたいのですが。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

なんか回答がズレていると思うのは気のせい?^^;



えー、スクリプトを自動実行させるにはtelnetで入って
crontab -e すればいいわけですが、たいていのプロバイダでは
cronを許可していないと思います。
kiwiとかairnetは許可してますね。

あともうひとつの方法としては、時間がくると指定したプログラムを
実行してくれるオンラインソフト(URL参照)を使って、

"C:\Program Files\Internet Explorer\IEXPLORE.EXE" www.hoehoe.com/auau.cgi

みたいにする方法があります。この方法だと当然自分のマシンを
起動させておく必要がありますが。

参考URL:http://www.vector.co.jp/vpack/filearea/win/util/ …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
一番待ち望んでいた回答かもしれません。
痒いところに手が届いたような感じです。
ありがとうございます。

お礼日時:2001/04/22 23:48

ある周期でHTMLの更新をしたいという事でしょうか?(見当ハズレだとしたらスミマセンm(^_^;m)



だとしたら、該当のHTMLがロード(表示)されたら必ずその時の日時情報をテンポラリファイルとして保存しておく様にし、再び誰かしらが該当のHTMLをロード(表示)したタイミングで前回表示された日時と照らし合わせ、その日時差から最新のHTMLに書き換える様にするというのはどうですか?
つまり、あたかも一定周期で書き換えられた“様に”見せる訳です。

この流れで処理するとしたら、SSI(サーバサイドインクルード)を利用して、~.shtml 形式で処理すると設計し易いです。
またその場合、実際に【書き換える】のではなく、INCLUDE構文でHTMLの一部を自動で吐き出す形を取るのが宜しいかな。

この回答への補足

ご回答いただき、ありがとうございます。
なんだか、こんな方法もあったのかと、目が丸くなって
しまいました。
更新というか、一定時間ごとにフォームのボタンを押して
欲しい・・・のですが、いろんな方からの回答を
いただいたので実現できるかもという気がしてきました。

補足日時:2001/04/27 10:39
    • good
    • 0

 もしあなたが自分でサーバーを持っているのではなく、一般のプロバイダをレンタルで借りているのであれば、まずプロバイダの許可を取ってください(^_^;


 人の手によらず定期的に実行するということは、「サーバーに常駐し、ずーーーっとCPUの一部を占有しっぱなし」か、あるいはスケジューラーなどにプログラムを登録するということのどちらかです。

 そんなことをしていいのか、というのが最初に問題になります。
 フツーは勝手にそんなことしたら苦情が来るか、でなければ強制的にプログラムを停止されてしまうでしょうね。特に前者は(^_^;
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
普通のレンタルサーバー業者ですから、たぶんそれは
無理だと思います。
でも私の知らないことがわかりました。感謝です。

お礼日時:2001/04/22 23:42

私もCGIで行うようなものではない気がします。


UNIXのcorntab(だったっけ?)とかで指定するのはどうでしょう。
ほかには・・・・・、メールを定期的に送信して、メールが届いたらCGIプログラムを起動するようにしておく、というのもUNIXの操作が必要ですが・・・。
まだ初心者なのであまり明確な答えでなく申し訳ないです・・・。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
UNIXの操作が必要なのですか・・・うーん
今借りているレンタルサーバーを変えなくては
なりません。。。このあたりもよくよく検討させて
いただきます。

お礼日時:2001/04/22 23:36

perlモジュールのNet::Telnetを使用すれば


telnet接続をすることができます。

でも、どう考えてもCGIで行う内容では
ない様な気がするのですか、、、

通常のperlスクリプトを定期的に実行し
その結果はファイルに書いたり、DBIを使って
何かしらのデータベースへ格納。
DBやファイルに保存された内容をCGIから参照。
というアプローチは如何ですか?

まぁ、何がしたいかにもよりますが、、、
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
いま、perlの本を見ているんですが・・・
わたしの持っている本にはあいにく載っていない
ようです。
でも気がかりなので、調べてみます。
具体的には、一定の時間ごとに、フォームのある
ボタンを押して、その後、ページを更新したいのです。
うーんわかりにくい説明かな。

お礼日時:2001/04/22 23:32

CGIの仕組みを調べてみれば分かるはずですが・・・



基本的にブラウザからのリクエストがあってから
はじめてサーバ側で実行されるので、何かしらの
アクションを取ってやらないと定期的に実行する
というのは無理だと思いますよ。

どうしてもというのであれば、ブラウザにリロードを
書けるページを作成した上で、起動しっぱなしに
しておけば、自動的にリロードをかけて、一定間隔で
実行してくれるはずです。

間違いがありましたらご指摘ください。
ではでは☆
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
なるほど、起動しっぱなしにしておいて、ブラウザの
リロードとはいいアイデアだと思います。
この案も一つの手段として検討させていただきます。

お礼日時:2001/04/22 23:24

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QHTML上(javascript)からCGIを実行する方法

javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI)
を実行する方法を探しています。
下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の
javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に
『test』と表示するのみ)を表示したいと考えています。

利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、
cgiが使用できるサーバ上のcgi結果を取得したいものです。
通常のcgiのように、1ページでcgi結果を表示するものではなく、
HTMLファイルの一部にcgi処理結果を表示させたいものです。

そもそも、SSIを使用しなければ下記のようなHTML内にcgiなどの
実行結果を表示する事は出来ないのでしょうか。
よろしくお願い致します。

※下例のプログラムではcgi結果は表示されませんでした・・・。

---<index.htm>----------------------------------------
<HTML>
<BODY>
<SCRIPT language="Javascript" src="http://xxx.xxx.xxx.xxx/test.cgi"></SCRIPT>
</BODY>
</HTML>

---<test.cgi>----------------------------------------
#!/usr/bin/perl

print "test"

javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI)
を実行する方法を探しています。
下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の
javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に
『test』と表示するのみ)を表示したいと考えています。

利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、
cgiが使用できるサーバ上のcgi結果を取得したいものです。
通常のcgiのように、1ページでcgi結果を表示するものではなく、
HTML...続きを読む

Aベストアンサー

「Google AdSense」のjavascriptでは#1さんの回答にもありますがiframeを使用するような仕掛けになっているようです。
・javascriptでiframeを展開。
・iframeのsrcでcgiを指定。

>外部cgiでjavascriptを生成する仕組みを作り、その生成されたjavascriptを参照するという間接的な仕組みを設ければ可能になる
そういう仕組みも可能です。
また、直接的に<script type="text/javascript" src="xxxx.cgi"></script>
こういう書き方も可能です。
※xxxx.cgiでは処理結果をjavascriptのコードとして
print "Content-Type: application/x-javascript\n\n";
print "document.write('xxxx');";
みたいにして吐き出す必要があります。

QリロードができるCGIないですか?

ページにアクセスすると同時にリロードをするようにするCGIはありませんか?

日記を管理人ページから書き込んだ後に、他の人がそれを見るときに、
いちいちリロードをしなければ、新着日記が更新されないので、
そういうCGIをcgiファイルで生成されるHTMLファイルに
組み込みたいと考えています。

なにかよい案に心当たりのある方がいらっしゃいましたら、
ぜひ教えてください。

Aベストアンサー

記述した内容が投稿されなかったので再度、記述します。(最終的に2重に投稿された場合は、申し訳ありません)
CGI自体がどうのようになっているのわかりませんが、以下のタグを追加すれば可能です。(実際、掲示板や日記で最新の情報が表示されます。)

・i-mode/Vodafone Liveの場合
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
・EZweb(WAP2.0用 WINやA11xx,A3xxx,A5xxx)
<meta http-equiv="Cache-Control" content="no-cache" />
・EZweb(WAP1.x用 TU-KAやCxxx,A10xx)
<HDML version="3.0" markable="true" ttl="0">
↑この場合だけ、<HDML>タグ内にttl="0"を追加すれば可能です。
他は、タグを追加です。
以上で、必ずキャッシュからデータを読むことなく必ず、サーバからデータをとりなおします。
万一、上記の方法でうまくいかない場合は、CGIプログラム内で、起動する際、単にxxx.cgiではなく、xxx.cgi?tm=$tm など必ず同じにならない値で起動する方法があります。
起動する絶対時間などを入れて起動すると全く同じアドレスとならないので必ず読み直しを行うようになります。(こちらも実績があります。)
質問の目的と違っていたらすみません。

記述した内容が投稿されなかったので再度、記述します。(最終的に2重に投稿された場合は、申し訳ありません)
CGI自体がどうのようになっているのわかりませんが、以下のタグを追加すれば可能です。(実際、掲示板や日記で最新の情報が表示されます。)

・i-mode/Vodafone Liveの場合
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
・EZweb(WAP2.0用 WINやA11xx,A3xxx,A5xxx)
<meta http-equiv="Cache-Control" content="no-cache" />
・EZweb(WAP1.x用 TU-KAやCxxx,A10xx)
<HDML version="3.0...続きを読む

Qポートの80と443

こちらのサービス(https://secure.logmein.com/)を利用すると、インターネットを見られるサーバーのポートの80と443が空いていればルータやファイアウォールに特段の設定なく外部からサーバーを操作できるそうですが、逆にサーバーのポートの80や443を空けることには何か危険性があるのでしょうか。

Aベストアンサー

ポート80は一般的なHTTP、ポート443はHTTPSです。
この2つのポートがあいていなければインターネット接続(WEBブラウジング)は出来ません。
ですから、ほとんどのファイアウォールでこのポートは開いています。(インターネット接続を制限している社内LANでは当然閉じていますが)

ちなみに、よく使うポートとしてはFTPで20、21、SMTP(送信メール)で25、受信メールPOP3で110あたりです。セキュリティポリシー上、この辺は制限される事も多いですが、HTTP 80、HTTPS(暗号化用)443は通常閉じません。


危険性?
WEBプロトコルを使ってFTP的なファイル転送(WebDAV)やVPN等も出来るようになっています。当然そこにはある種の危険はつきものですが、WEBブラウジングに伴う危険と大きく変わりません。ウィルス等に感染していればこの2つのポートだけでも相当危険でしょうね。

参考まで。

QCGI動作後に元のページに戻る方法

Perl , javascript 初心者です。
あるページの一番下に,チェックボックスを設置して選択してもらうという簡単なアンケートを作っています。
submit ボタンを押した後,CGI(Perl) で処理を行い,その後元のページの元いた場所(アンケートがあるところ)を表示させることはできますか?
また,できれば submit ボタンの横に「ご協力ありがとうございました」というコメントを表示したいと思います。

良い方法があれば教えて下さい。

Aベストアンサー

perlでは、
print "location: (URL)\n\n";
これでページを呼び出します。
同じフォームに戻らなくても、お礼のページを作った方が良いと思います。
どうしても、フォームに戻るなら、CGIから戻ってきたことが判るようにURLの後ろに「?back」などと識別コードを付けます。
そして、HTML内にJavaScriptを埋め込み、自分自身のURLを調べれば、普段のURLと違うことが判ります。

Qapache で /cgi-bin/にアクセスできません。

Forbidden

You don't have permission to access /cgi-bin/ on this server.


Apache/1.3.19 Server at localhost Port 80

ブラウザで見ようとすると上のようなエラーが表示されます。
htdocs内の初期のテストのindex.htmlは参照できます。

Aベストアンサー

単純にpermisson(権限) がないのではありませんか?

ログインユーザ(nobodyとか?)に対する
ディレクトリのアクセス権限を変更してみては?

ログインユーザはhttpd.conf(?)で設定していますよね?
違うかな??

QOnclickイベントでデータをcgiに受け渡す方法はありますか?

Onclickイベントでデータをcgiに受け渡す方法はありますか?

Aベストアンサー

<form action="渡したいcgiファイル">を指定して、
onClick=submit();
でもできると思いますけど、functionを別に記述して、
onClick=function名
別なところに
<script language="JavaScript">
funciont function名(){
document.form名.submit();
}
</script>
を書いてあれば、指定のcgiにフォームの内容(値)が渡されますよ。
これじゃダメでしょうか?

Q