http://www.atmarkit.co.jp/fwin2k/win2ktips/066admintools/adminto...
@IT:Windows TIPS -- Tips:サーバ用管理ツールをクライアントPCにインストールする
すでにご存知かも知れませんが、2003serverではtelnetサービスを標準で利用することができます。
したがって、お使いのWinXPから2003serverにtelnetログインし、対象のバッチコマンドを実行すればよろしいのではないでしょうか?
具体的には、XPのコマンドプロンプトから、
telnet 202.248.xxx.xxx (2003serverのIPアドレス)
を実行し、お使いのIDとパスワードでログインして、あとはDOSコマンドの要領でバッチコマンドを実行するということです。
http://www.hatena.ne.jp/1100613967#
人力検索はてな - 解決できた場合は2000ポイント差し上げます。遠隔地の2003server(202.248.xxx.xxx)にWinXP(非固定IP)で接続しています。2003Server上にftpコマンドを書いたバッチ..
リモートデスクトップやVNC等を使いたくないのであれば、Perl等でCGIスクリプトを作成し、ブラウザからCGIを呼び出してその中でバッチファイルを動かすという方法が思いつきます。(自分ならこうします)
ただ、こうなると2003serverをHTTPサーバーにする必要もでてきます。
また、勝手に誰でも実行できないように認証をかける必要もでてくるでしょうね。
Perlでやるなら、
system(’hogehoge.bat’) ←system関数
や
`hogehoge.bat` ←バックスラッシュで囲む
を使ってバッチファイルを実行できます。
<html>
<head>
<script language=”VBScript”>
Sub cmdExec(Link)
Dim oWs , Rtn
Set oWs = CreateObject(”Wscript.Shell”)
Rtn = oWs.Run(”cmd.exe /C ” & chr(34) & Replace(Link,”/”,”¥”) & chr(34) , 1, False)
Set oWs = Nothing
End Sub
</script>
</head>
<body onclick=”cmdExec(’ftp.bat’)”>
</body>
</html>
2003server上でIISを稼動させて
こんなスクリプトをXPクライアントから実行するなら
実行ユーザはサーバ上のユーザですので
IP制限にひっかからないと思います
こんなのでどうでしょうか?
http://itpro.nikkeibp.co.jp/free/NT/WinKeyWord/20040805/1/rexec....
Windowsコマンド集:(rexec)
DOSのREXECコマンドを使ってリモート実行すればいいと思います。
Yahoo! JAPAN
全く別の視点から回答させて頂きます。
XPマシンからのタイミング的な指示が必要であれば問題外ですので、ポイントは結構です^^;
バッチファイルを実行する、という目的に絞り、さらにXPマシンからリモート操作を行う必要は無くて、一定周期の決まった時刻にバッチファイルが実行できればそれでよいというのであれば、タスク機能で簡単に出来ます。
複数のサーバ間でファイルの同期などを取りたいのであれば、これで十分な場合があります。
(1)システムツール → タスク でタスクの追加を実行。
(2)作成したバッチファイルを指定する。
(デフォルトではバッチファイルは候補に出てこないと思いますので、実行するプログラム → 参照 → ファイル名に*.bat → 開く でバッチファイルを無理矢理?表示させます)
(3)スケジュールを設定します。また、「新規」→ 複数設定できるので、1日何回も実行するようにすることも出来ます。
(4)パスワードは必ず設定します。
(5)バッチファイル実行後、コマンドプロンプト画面が残ってしまわないように、exit /b 等は忘れずに・・・。
4の回答者です。
すいません、REXECは2003serverでサービスが用意されていませんでした。
RSHやRCPも同様にサービスが用意されていないようです。
このあたりのコマンドが使えれば簡単なんですけどね。
ちなみにコマンドそのものは有効ですのでUNIX系のサーバーなら大丈夫です。
1の方の回答のTelnetが一番簡単だと思いますがセキュリティには気をつけてください。
ポイントは不要です。
現在telnetでなんとかならないかなーといろいろ調べているのですが、telnetを起動して、自動的にIDとパスワードを入力して、コマンドを自動的に(バッチファイルのように)入力していく方法が分かりません。。。UNIXのexpectのようなコマンドはないのでしょうか。2003ServerにREXECをリクエストしたら、正しいパスワードを入れてもrejectされたので、おかしいなと思ったらそういうことだったんですね。ありがとうございました。
2003 serverにcygwinのsshdを入れて、XPからsshで制御する、というのはどうでしょうか。
sshの公開鍵認証は、ある公開鍵が使われるとあらかじめ指定されたコマンドを実行する、という使い方があります(クライアントが送ったコマンドは無視されます)。
これを利用して、まず認証を公開鍵認証に限定して、更に実行するコマンドも固定してしまえば、セキュリティも強化できるし自動実行もできるので、一石二鳥です。
URLは「sshd cygwin」でgoogle検索すると最初にヒットするページです。他の検索結果も併せて参照されることをおすすめします。
公開鍵認証を用いた自動実行については、下記のURLの「authorized_keys ファイルの形式」というセクションに書かれています。
http://hp.vector.co.jp/authors/VA002416/
Tera Term Home Page
TeraTermProのマクロではいかがでしょうか?
マクロファイルを”FTPup.TTL”とすると、
ttpmacro.exe FTPup.TTL
でオートパイロット出来ます。
【FTPup.TTLの例】
--↓ここから-------------------------
connect ’サーバー名’
UsernamePrompt = ’login: ’
Username = ’アカウント’
PasswordPrompt = ’password: ’
Password = ’パスワード’
Prompt = ’>’
wait UsernamePrompt
sendln Username
wait PasswordPrompt
sendln Password
wait Prompt
sendln ’ftp -s c:¥script.txt >>c:¥exec.log’
wait Prompt
sendln ’exit’
closett
--↑ここまで-------------------------
Win2k+Service for Unix(プレーンテキスト認証)での確認のため
Win2003SVやHOST側設定で違うかも知れません。
http://www.sakurachan.org/soft/teraterm-j/
Japanized Tera Term Pro
ならばTelnetを TERATERMを利用して 使ってみてはいかがでしょうか?
マクロファイルを TTPMACRO.EXEに関連付けることで、マクロファイルをダブルクリックするだけで、接続からログイン、パスワードの入力、コマンドラインからの実行まで全部自動で行ってくれるようになります
例)
注:ログインスクリプトを 一部抜粋しただけです
flushrecv
testlink
if result<2 connect ’192.168.0.1’
getpassword ’user.dat’ UPASS passwd
:lopbk
timeout=20
wait ’User’ ’Password’
if result=0 goto timeoutx
if result=1 goto sid
if result=2 goto spswd
if result=3 goto enter
:timeoutx
disconnect
goto ent
:sid
wait
sendln ’Administrator’
goto lopbk
:spswd
・・・・こんな感じです
SSHにも対応してるのでいかがでしょうか?
Windows2003server、WinXP(非固定IP)、AサーバがそれぞれVPNを通じてLANのようにあつかえれば良いのではないでしょうか。
しかも、現状のIPフィルタリングやルータ等の条件は一切変えずにであれば、
Aのサーバに、YourServerというソフトをダウンロードして、IDとパスワードを決めて公開させます。
Windows2003から、http://(登録ID).server.co.jpにアクセスしてファイル共有を一度行います。
そうすれば、Windows2003のマイネットワークにshare.(登録ID).server.co.jpというフォルダーが自動的に作成されます。
(ここまでの作業で、VPNを設定してファイル共有がかかるようになり、社内LANのような状態です。ルータの設定やIPフィルタリング等の設定も変更する必要はありません。現状のセキュリティの状態を保ったままですので大丈夫です)
Aのサーバのshare.(登録ID).server.co.jpにバッチファイルを置いて起動させれば、良いのではないでしょうか。
http://www.monyo.com/technical/windows/19.html
$B%j%b!<%H$N(BNT$B%^%7%s>e$G%3%^%s%I$r<B9T$9$k(B </p>
具体的に説明まではできませんが、以前実際に行っていました。
参考程度にお考え下さい。
http://support.microsoft.com/default.aspx?scid=kb;ja;313289
[HOWTO] Windows NT で At.exe コマンドを使用してバックアップをスケジュールする方法
サーバ側のAdministratorのパスワードを知っていることが条件ですが、ATコマンドでも可能です。
-----
at ¥¥コンピュータ名id/delete時刻/interactive/every:日付[,...]/next:日付[,...]”コマンド”
・¥¥コンピュータ名 - リモート コンピュータを指定します。このスイッチを指定しないと、コマンドはローカル コンピュータでスケジュールされます。
・command - 実行するプログラム、または C:¥Backup.cmd などのバッチ ファイルを指定します。
http://support.microsoft.com/default.aspx?scid=kb;ja;313565
[HOWTO] AT コマンドを使用してタスクをスケジュールする方法
例えばこんな感じでどうでしょうか。
(1)必要な権限を取得 net use ¥¥202.248.xxx.xxx /user:Administrator
(2)サーバの時刻を確認 net time ¥¥202.248.xxx.xxx
(3)実行コマンドをセット at hh:mm ¥¥202.248.xxx.xxx cmd /c c:¥hoge.bat
いろいろ試してみたのですが、なかなかうまくいきませんでした。試せなかった手段もあり、申し訳ありません。ポイントは1000ポイントを全員で分配でお願いします。
現在、いままで回答頂いた手順を試しています。
バッチファイルの内容は「ftp -s c:¥script.txt >>c:¥exec.log」だけなのですが・・・。