
Apache2.0.63+ActivePerl5.8.8.822を自宅サーバ(Windows XP Pro SP3)にて運営しています。
自宅サーバ内に、外部ウェブサイトのデータを取得するPerlスクリプトrecord.plを置き、
これを一定間隔で自動実行させたいと考えています。
そこで、record.plまたはそのショートカットをWindowsのタスクに登録してタイマー起動させてみました。
確かに一定間隔で自動実行されますが、実行の際に毎回必ずコマンド画面が立ち上がって来るので、これは嬉しくありません。
コマンド画面が立ち上がらない方法として、record.plをApacheのCGIとして実行することを考えました。
自宅サーバ自身からApacheに対してhttpリクエストを定期的に送る方法ということで、色々調べてみると、
以下のコマンドでtelnetを使ってhttpリクエストが送れるということまではわかりましたが、
--------------------------------------------------------
Microsoft Telnet> set local_echo(Enter)
Microsoft Telnet> set codeset Japanese EUC(Enter)
Microsoft Telnet> open 127.0.0.1 80(Enter)
GET /currency/record.pl HTTP/1.1(Enter)
HOST: 127.0.0.1 80(Enter)
(Enter)
--------------------------------------------------------
これをどうすれば自動実行できるのかがわかりません。
telnet以外にhttpリクエストを送る方法があるのなら、それでも構いませんし、
上記2つの方法以外でrecord.plを一定間隔で自動実行できるなら、それでも構いません。
コマンド画面が立ち上がらずに、自宅サーバのみでrecord.plを定期的に自動実行できる方法があれば教えてください。
よろしくお願いします。
<record.plのパス>
内部パス:D:/cgi-bin/currency/record.pl
URL(仮):http://xxx.ddo.jp/currency/record.pl (ScriptAlias使用)
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
>Admin権限
の場合はデフォルトでfullコントロールになっていると思います
新規作成のAdmin権限のアカウントでログオンしてrecord.plが実行できるか確認して実行できれば↓を参照してみてください
http://pasofaq.jp/windows/admintools/0x80070005. …
この回答への補足
ありがとうございます。
Admin権限の新規アカウントでログオンし、ファイルの関連付けを変更してから、実行できるかどうか確認してみました。
record.pl自体は、ダブルクリックでも、ファイルを指定して実行からでも、コマンドラインからでも、実行できます。
しかし、登録したタスクに関しては、「ログオンしている場合に実行」にチェックが入っていると手動でもタイマーでも実行できますが、チェックを外してパスワード設定にすると、例によって設定エラーとなり、手動で実行しても“開始できません”となり実行されません。
もちろんパスワードは何回も確認しました。
試しにメインアカウントに戻って、メインアカウントで同じタスク内容を作成してみました。
「ログオンしている場合に実行」にチェックを入れると何も問題ありませんが、パスワード設定にすると上記と同じように設定エラーも出ますし、手動実行もできません。
つまり、どちらのAdmin権限アカウントに関しても、パスワード設定ではタスクは実行不能のようです。
メインアカウントでもタスクが実行できないということより、問題は一気に解決しました。
新規作成のAdmin権限アカウントだけでなく、メインアカウントにもログオンのためのパスワードを設定していませんでした。
サーバ使用ということで、(再)起動の手間を省くためにパスワードは省略していました。
新規作成のAdmin権限アカウントにパスワードを設定したら、例のエラーは出なくなり、バックグラウンドでタスクが実行されるようになりました。
prumさん、何度もお付き合い頂き、ありがとうございました。
本来の目的は、これで完全に達成されました。
改めてお礼を申し上げます。
No.6
- 回答日時:
>record.plまたはそのショートカット
record.plのショートカットではなくて
record.plの起動ショートカットをタスクに登録すればと思います
起動ショートカットの作成は
ショートカットの作成またはショートカットのプロパティで
perl D:/cgi-bin/currency/record.pl
>拡張子の件に関して
record.pl を起動する「バッチファイル」record.cmdを
タスクに登録するのでもいいかと
record.pl 起動コマンドは
perl D:/cgi-bin/currency/record.pl
拡張子に関してもアドバイス頂き、ありがとうございます。
起動ショートカットなるものがあることなど知りませんでした。
メインアカウントではpl拡張子はPerl Command Line Interpreterとして認識されていますが、それ以外のアカウントでは単なるテキストファイルとしてしか認識されていません。
ファイルの関連付けの問題であるような気がします。
とにかく、起動ショートカットやバッチファイルの作成方法は了解しました。
下のアクセス許可さえクリアできれば、起動ショートカットやバッチファイルは問題なく動作するものと思われます。
No.5
- 回答日時:
>はじめにメインアカウントとGuestアカウントの両方にログオンしておかないといけないということですね
タスクの登録を管理者のアカウント(Admini権限)でパスワードありにすれば
バックグラウンドのアカウントはログオンしていなくても
タスクは実行されていますのでお試し下さい。
この回答への補足
prumさん、ありがとうございます。
Admin権限のアカウントを新規作成し、タスク登録でパスワードを設定、最後に適用ボタンを押すと、“要求された操作を実行するアクセス許可がありません”と出てエラーとなってしまいました。
前回prumさんのおっしゃっていたアクセス権の設定が必要になるようです。
これはどこでどうやって設定すればいいのでしょう?
ちなみに、Perlのパスは以下の通りです。
C:/Perl/bin/perl.exe
宜しくお願いします。
No.4
- 回答日時:
>そのアカウントの権限は、どのレベル(グループ)に設定すればいいのでしょう?
私の環境ではAdmin権限のログインで
Guestアカウントのタスクは完全にバッククラウンドで起動できています(コマンド画面は表示されません)
ただしGuestアカウントにファイルのアクセスや実行の権限が必要でしょうが
権限に関する説明、ありがとうございます。
昨夜、ずっと試していたので返事が遅くなりました。
prumさんのおっしゃる通り、Guestアカウントでもタスクはバックグランド実行されることを確認しました。
ただ、これをするためには、はじめにメインアカウントとGuestアカウントの両方にログオンしておかないといけないということですね。
メインアカウントは当然としても、もう一つのアカウントにもログオンしっ放しというのはセキュリティ面で不安が残りますが・・・
とりあえずは実現できて良かったと思っています。
Guestアカウントに関しては、ファイルのアクセス権を何ら設定することなしに、record.plはタイマー実行されたことを付け加えておきます。
ただ、ファイル名がrecord.plだとメモ帳で開いて終わるだけで、肝心のスクリプトは実行されませんでした。実行されるにはファイル名をrecord.cgiと変更する必要がありました。
的確なアドバイスを頂き、ありがとうございました。
また、MOMON12345さん、Tinteさんにもお礼申し上げます。
今回はprumさんの方法が自分の理想に最も近かったので、こちらを採用させて頂きますが、お二方の方法も、何らかの場面で役に立つときが来ると思っています。
皆さんのアドバイスに感謝します。
問題は解決しましたが、Guestアカウントのログオンしっ放しと、拡張子の件に関して、何かアドバイスなり、注意点なり、コメントなりが頂けたらと思いますので、もう暫くはこの質問を締め切らずに置いておきたいと思います。もし何かありましたら宜しくお願いします。
そして土曜か日曜あたりに締め切りろうと思っています。
No.2
- 回答日時:
Winサーバーにはあまり詳しくないのですが、Cygwinのcronで一定期間のスクリプトの実行はできると思います。
PerlとCygwinはわりとメジャーなペアだと思いますよ。具体的なインストールの方法や使い方はわからないのですが、たぶんCygwinで検索すると山ほど情報があると思います。
cronという実行シェル(だったような…)に実行させるスクリプトのパスと時間を書き込んで放っておくだけでよかったはずです。
具体的なことがわからなくてすんません。
アドバイスありがとうございます。
以前telnetのことを調べていたときに、Cygwinに関するページも参照した記憶があります。
その時は、インストールと設定が物凄く面倒だなという印象があり、結局Cygwinという選択肢は見送ってしまいました。
今回、比較的簡単に実現できる方法が見つからなければ、Cygwinを導入することも考えてみます。
なにぶん急いでいるわけではないので、結果をご報告するまでに、ちょっと時間が掛かるかもしれませんが、その点はご了承ください。
とにかく、ご回答ありがとうございました。
No.1
- 回答日時:
Windows版は触ったことがないので外していたらごめんなさいですが、Perlの中で(1時間ごとに実行なら) sleep(3600) なんてのはダメですかね。
timeでも良いですが、とにかく起動しっぱなしでsleepさせておく方法。
unixならこれでお休みしてくれますが…
アドバイスありがとうございます。
record.plのスクリプト全体を、sleepを入れてループで回し続けるということですね。
ただ、Windowsではrecord.plの初回の起動のときにコマンド画面が立ち上がり、sleep中はコマンド画面が立ち上がりっぱなしになります。
途中でコマンド画面を閉じると、スクリプト自体も終了してしまうので、やはりコマンド画面という難点が残ってしまいます。
ループ実行中はコマンド画面を最小化しておくという手もあるのですが、なるべくコマンド画面が立ち上がらずにという方法を考えていますので、申し訳ないですが、これは参考意見とさせて頂きます。
負荷の点も心配だったのですが、これを実際に試してみると、スクリプトを起動しっぱなしでも、sleep中は負荷がまったく掛かっていないという発見がありました。
今後何らかの機会に使わせてもらいたいと思います。
ご回答、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー ログオンユーザーがいない場合に自動再起動 1 2022/09/28 09:53
- PHP php エラー 3 2022/11/18 23:32
- IT・エンジニアリング インフラエンジニア(ネットワークエンジニア)の検証業務について教えてください。 インフラ初心者なので 2 2022/06/26 00:08
- その他(クラウドサービス・オンラインストレージ) Onedriveで実現したい事。2台のPC間で。 2 2023/04/10 20:42
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- Excel(エクセル) Excel ヘルプの[ロック解除]、<c0>、</c0> の意味は何ですか? 1 2023/02/20 16:58
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
- AJAX RPA(PowerAutomate)の実装について 1 2023/07/31 13:46
- オープンソース コマンドプロンプトのコードの実行方法を教えて欲しい 2 2022/11/26 20:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの表にヘンな枠が・・・
-
pingは正常なのにtracerouteで...
-
SONYの音楽ソフト「x-アプリ」...
-
信頼済みサイト登録をbatファイ...
-
Linux のシェルスクリプトの強...
-
大手町駅。それはホームから非...
-
Openイベントを開始させないで...
-
SPI非言語の問題 解説お願いします
-
文化祭の書類で不備がありました
-
リモートでのスクリプトファイ...
-
複数のバッチを同時並行で起動...
-
バッチファイル内の各コマンド...
-
時間のマクロで最初はその時間...
-
シャットダウンバッチがうまく...
-
LD_LIBRARY_PATHって?
-
お気に入りの処理について。
-
windows10のごみ箱をrd /s /q C...
-
最初の一度しか実行されないロ...
-
Mac de プログラム
-
emacsでCtrl+zを押してサスペン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SONYの音楽ソフト「x-アプリ」...
-
エクセルの表にヘンな枠が・・・
-
pingは正常なのにtracerouteで...
-
Linux のシェルスクリプトの強...
-
シャットダウンバッチがうまく...
-
windows10のごみ箱をrd /s /q C...
-
SPI非言語の問題 解説お願いします
-
バッチファイル内の各コマンド...
-
信頼済みサイト登録をbatファイ...
-
最初の一度しか実行されないロ...
-
python IDLEで訂正、削除のやり...
-
emacsでCtrl+zを押してサスペン...
-
時間のマクロで最初はその時間...
-
Openイベントを開始させないで...
-
後先ってやっぱり考えて行動し...
-
sudoで実行したコマンドの実行...
-
ROBOCOPY cmdで正常に処理され...
-
ACCESSレポートをPDFに出力したい
-
PowerShellのスクリプト実行に...
-
LD_LIBRARY_PATHって?
おすすめ情報