プロが教える店舗&オフィスのセキュリティ対策術

教えてください
linuxマシンでサーバーを立ち上げているのですが
コマンドで以下のシェルを実行すると正常に動作するのに、
cronで同じシェルを実行すると動作しません。
リソースが不足しているのかと思うのですが、
何か対策方法を教えてください。

cron の実施は定期時刻で動作しています。
route、pptpプログラムが動作しません。

動作状況を確認するため、「netstat -r」を組み入れるのですが表示内容に変化はありません

シェルはVPNを自動で再接続するコマンドです。

#!/bin/sh
if [ `ps -ef | awk '{print $8}' | grep pptp | wc -l` -eq 0 ]
then
route del default gw XXX.XXX.XXX.XXX
sleep 1m
/etc/ppp/stoppptp.sh
sleep 10m
/etc/ppp/startpptp.sh
fi
exit 0


<< startpptp.sh >>
#!/bin/sh
route add -host YYY.YYY.YYY.YYY gw XXX.XXX.XXX.XXX
sleep 30s
route del default gw XXX.XXX.XXX.XXX
sleep 30s
pptp YYY.YYY.YYY.YYY
exit 0


<< stoppptp.sh >>
#!/bin/sh
killall pptp
route add default gw XXX.XXX.XXX.XXX
route del -net YYY.YYY.YYY.YYY netmask 255.255.255.255 gw XXX.XXX.XXX.XXX
exit 0

XXX.XXX.XXX.XXX プライベートアドレス
YYY.YYY.YYY.YYY VPNアドレス

環境
linuxマシン:openblocks266
OS:yellowdoglinux 但し、歪なインストールをしています

A 回答 (3件)

スクリプト(3つとも)の中の実行ファイル(psとかawkとか)を


すべて絶対パスに書き換えたらどうでしょう。

cronからスクリプトを呼び出すときと、通常のコマンドラインから
スクリプトを呼び出すときとでは、環境変数が異なりますから。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ps、awkではなく、route、pptpを絶対パスに
変えたら、OKになりました。

お礼日時:2007/03/11 21:00

リソースの問題ではなく,環境変数の違いではないですか?



一度cronで起動されるスクリプトの中で
set > /tmp/env$$ 2>&1

とかして,ログインシェルの環境変数設定状況との差を調べてみましょう.
    • good
    • 0
この回答へのお礼

ありがとうございました。
答えはコマンドの絶対パスでした。

お礼日時:2007/03/11 21:03

あとはcronをきちんとrootで動かしているかどうかも


確認しておいた方がよいでしょう
    • good
    • 0
この回答へのお礼

ありがとうございます。
その点は確認できております。

お礼日時:2007/03/11 21:04

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