こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

リモートでのスクリプトファイルの実行方法について

Solaris9を利用しております。
データを更新するスクリプトファイル(shファイル)があり、現在はcronで
スケジュール設定を行っております。
最近、そのスクリプトファイルの実行をユーザの意図したタイミングで走らせたい
という要望が挙がっております。
ただし、そのユーザはUNIXについては全く知らない素人なため、直接コマンドを
実行させるのは避けたい状況です。(ログインパスワードも知らせたくない)

という状況なのですが、簡単な操作でスクリプトを実行できる何か良い方法はありますでしょうか?

宜しくお願い致します。

投稿日時 - 2006-11-14 10:37:38

QNo.2538266

困ってます

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

確かにおっしゃるとおりです。
クライアントPCへのログインアカウント = .rhosts に記載するアカウント
rsh コマンドで指定するアカウント = Solaris に作成するアカウント

私の環境では、上記4つが全て同じアカウント名であり、
クライアントPCへのログインアカウントを考慮する点を忘れておりました。
すいません。時間を取らせましたことお詫びします。

投稿日時 - 2006-11-17 20:50:39

お礼

> クライアントPCへのログインアカウントを考慮する点を忘れておりました。
> すいません。時間を取らせましたことお詫びします。
いえいえ。いろいろありがとうございました。

Solaris上でWindowsのログイン名を認識するはずがないという先入観もあり・・・
動作した時に「まさか・・・?!」と思いましたが、、
そうなんですね、正直これには驚きでした。
勉強になりました。ありがとうございます。

また問題クリアされましたので、これで要望どおりの動作が可能になりそうです m(^^)m

投稿日時 - 2006-11-20 10:08:54

ANo.8

このQ&Aは役に立ちましたか?

9人が「このQ&Aが役に立った」と投票しています

回答(8)

ANo.7

> ホスト名は、IPアドレスでOKですよね?

私の環境で、.rhosts の内容をIPアドレスに変更したところ
permission denied
rsh: can't establish connection
になりました。

IPアドレス指定ではダメなようです。
一度、ホスト名指定に変更してみてください。

私の今日の仕事が .rhosts の勉強になっています・・・(笑)

投稿日時 - 2006-11-16 15:05:54

補足

やっと動作しました。
ありがとうございます。

仕様を勘違いしていたのかもしれませんが、
> .rhostsファイル の設定(Solaris内)
に記述するユーザ名は何のユーザ名でしょうか?

私の認識・設定した内容は、
(1)「testuser」というユーザをSolarisOS上に作成
(2).rhostsに接続を許可するホスト名と「testuser」を記載
(3)rshを実行するマシンにて「rsh HOSTNAME -l testuser ls」を実行
でした。そしてダメでした。
(2)と(3)との情報で認証を行っていると思っておりました。
↑認識間違っておりますか?


rhostsファイルに「testuser」ではなく、ローカルマシンのWindowsのログイン名(ActiveDirectoryにログインしているユーザ名)を記載したところ正常に動作しました。他の設定はいじっておりません。

結果動作してよかったのですが、何か余計に混乱してきました・・・。

投稿日時 - 2006-11-17 17:44:33

お礼

いろいろありがとうございますm(__)m

ただ、未だにダメです。
(ホスト名にも変えてみました。)

今いろいろ調べていますが・・・ 進展なしです。

取り急ぎ、状況報告まで。
進展がありましたらコメントします。

投稿日時 - 2006-11-16 16:35:31

ANo.6

パーミッションエラーですね。。。。

testuser で 172.45.123.1 にログインし、
ps -el コマンドを実行してください。その中に inetd が存在しますか?

存在しないのであればサーバ管理者によって r系 の実行が全て拒否されています。
/etc/inetd.conf の設定を変更しない限り rsh での接続はできません。

inetd がちゃんと存在するのであれば、.rhosts の中を再度確認してください。
接続してくるホストのホスト名[タブ区切り]ユーザ名(testuser)
です。
これでもダメならば .rhosts のパーミションを 644 or 600 にしてください

これでどうかな?
根本的に私が勘違いしているような気もしてきました・・・

あと、1時間ぐらいほっておくと接続できるようになる!
みたいな体験をしたこともあります。(笑)

投稿日時 - 2006-11-16 13:43:36

お礼

> ps -el コマンドを実行してください。その中に inetd が存在しますか?

はい、存在してます。
---------
$ ps -ef | grep inetd
root 160 1 0 8月 26 ? 0:00 /usr/sbin/inetd -s
$
$
---------

マシン・ユーザごとに、RSHを有効にする、などの設定の必要はないですよね?

以下のサイトを見て、inetd.confファイルの中で、rlogind,rshdを検索してみたのですが
見つかりませんでした。
OS側の設定が、何か抜けてますかね?

http://x68000.q-e-d.net/~68user/unix/pickup?%7E%2F%2Erhosts

OSはSolaris8でテストを行ってます(実運用はSolaris9)



> inetd がちゃんと存在するのであれば、.rhosts の中を再度確認してください。
> 接続してくるホストのホスト名[タブ区切り]ユーザ名(testuser)
> です。
> これでもダメならば .rhosts のパーミションを 644 or 600 にしてください

も問題ないと思います。
ホスト名は、IPアドレスでOKですよね?
パーミッションも644となっております。


時間が経って解決してくれれば良いんですがね・・・(笑)

投稿日時 - 2006-11-16 14:32:36

ANo.5

ANo3,4 のものです。
OSかバージョンを勘違いしていたようです。
順番が違うみたいですね。

C:\tmp>rsh 172.45.123.1 -l testuser ls
これでどうですか?

これでちゃんと表示されるようになれば、
あとは ls コマンドの変わりにシェルスクリプトを指定すればOKですね。

投稿日時 - 2006-11-16 12:02:49

お礼

単純に文法(順番)の間違いだったんですね。
すみません

修正して試してみたところ、
-------
172.45.123.1: permission denied
rsh: can't establish connection
-------
というエラーが発生してしまいました。
権限エラーのようですが、なぜか分かりますでしょうか?
度々すみません。

宜しくお願い致します。

投稿日時 - 2006-11-16 13:02:53

ANo.4

ANo.3 のものです。

> > .rhostsファイル の設定(Solaris内)
> についてですが、どのような設定を行えばよいのでしょうか?
作成したユーザアカウントのホームディレクトリに作成します。
ホスト名(hoge.foo.co.jp)とユーザアカウント名(user2)をタブで区切って記述します。
hoge.foo.co.jp user2 ←こんな感じ。
指定したホストから指定したユーザアカウントのみ接続を許す!
といったものになります。

> バッチファイルの作成(ユーザPC内)
バッチファイルには、rsh コマンドを記述するだけです。
データを更新するスクリプトファイル(shファイル)を a.sh とすると
rsh -l user1 hoge.foo.co.jp a.sh
(a.sh はフルパスで指定することをお薦めします)
バッチファイルは、****.bat で保存しておけばOKです。

> login、スクリプトファイルを実行、exitで良いのでしょうか?
> 何か気をつけることはありますか?
rsh での実行には login や exit は、関係ありません。

> ただし、そのユーザはUNIXについては全く知らない素人なため、直接コマンドを
> 実行させるのは避けたい状況です。(ログインパスワードも知らせたくない)
利用者に信頼が置けない場合は、
shファイル内に管理者通知機能を付けることをお薦めします(笑)

投稿日時 - 2006-11-14 13:09:40

お礼

ご回答が遅くなってしまい申し訳ございません。

コメントいただいたように設定を行い、実際に動作を確認してみましたが、うまく動作していないようです。(接続できていない?)

Windowsからbatファイルを実行した結果は以下の通りです。
(とりあえずlsの結果を返そうと思って以下のようにしてみました)
---------------------------------------------------------------------------
C:\tmp>test.bat

C:\tmp>rsh -l testuser 172.45.123.1 ls

Runs commands on remote hosts running the RSH service.

RSH host [-l username] [-n] command

host Specifies the remote host on which to run command.
-l username Specifies the user name to use on the remote host. If
omitted, the logged on user name is used.
-n Redirects the input of RSH to NULL.
command Specifies the command to run.


C:\tmp>

---------------------------------------------------------------------------

何か考えられる原因はありますでしょうか?

宜しくお願い致します。

投稿日時 - 2006-11-16 11:33:24

ANo.3

rsh で実行すればよいと思います。

ユーザアカウント作成(Solaris内)
.rhostsファイル の設定(Solaris内)
バッチファイルの作成(ユーザPC内)

この3つを用意すれば実行できます。

投稿日時 - 2006-11-14 11:30:20

お礼

ご回答ありがとうございます。

> .rhostsファイル の設定(Solaris内)
についてですが、どのような設定を行えばよいのでしょうか?

> バッチファイルの作成(ユーザPC内)

についてですが
login、スクリプトファイルを実行、exit 
で良いのでしょうか?何か気をつけることはありますか?

Windowsからsolarisに接続するバッチファイルを作ったことが無く、またSolarisに関しても素人なため、基礎的な質問で申し訳ございませんが宜しくお願い致します。

投稿日時 - 2006-11-14 11:54:59

No1です。
下記2の方法のやり方の参考にしてください。
シェルスクリプトの最後にexitさせておけば、ログイン後即スクリプト実行→ログアウトとなります。

参考URL:http://h50221.www5.hp.com/cgi/service/knavi/production/doc_disp.cgi?category=886&doc=jnav007200

投稿日時 - 2006-11-14 11:29:45

思いつくのは、
1.メールが受け取れるマシンなら、aliasesか.forwardでスクリプトに渡す。
2.専用のアカウントのログインシェルにそのスクリプトを指定しておき、ログインすれば動くようにしておく。
3./etc/inetd.conf で、あるポート(例えば、fingerとか)にパケットが来たらスクリプトが動くようにしておく。

3はあまり薦められませんが...

投稿日時 - 2006-11-14 11:24:34

あなたにオススメの質問