2011-10-18 11 views
1

複数のマシンから1つのスクリプトを実行する必要がありますが、各マシンでは一意のコマンドを実行する必要があります。Bash IP IF THEN ELSEステートメント

私はbashスクリプトがこれを行うことができると思っていましたが、私はこの部門にあまり精通していません。

私が必要とするコードは、以下のコードに似ています(またはそうなるでしょう)。完璧で機能的ではありませんが、実際に私が探しているものを表現するのに役立ちます。

誰かがこのスクリプトで私を助けてくれますか?

#/bin/bash 
IP= ifconfig eth0 | grep inet | grep -v inet6 | cut -c 7-17 

If [$IP -eq 192.168.32.1] 
then mkdir IPFolder-1 
more code... 
else 
if [$IP -eq 192.168.32.2] 
then mkdir IPFolder-2 
more code... 
else 
if [$IP -eq 192.168.32.5] 
then mkdir IPFolder-5 
more code... 
+0

あなたの質問は何か分かりません。実行ステップはボックスごとに完全に異なりますか?パスや名前などが異なる同じコマンドですか?あなたが書いたスクリプトでいくつかの問題にぶち当たっていますか? – nsfyn55

+1

「ヘルプ」方法?私たちは何をしたいのですか?あなたの質問は何ですか?そして、自分の入場によって正確に表現されないスクリプトからあなたの意図を推測するにはどうしたらいいですか? –

+1

これはIPを取得する簡単な方法かもしれません: 'ifconfig eth0 | grep -oP '(?<= inet addr:)[0-9。] +' ' –

答えて

4

使用二重括弧、スペースが重要です:

IP=$(ifconfig eth0 | grep inet | grep -v inet6 | cut -c 21-34) 
if [[ $IP = 192.168.32.1 ]]; then 
    mkdir IPFolder-1 
elif [[ $IP = 192.168.32.2 ]]; then 
    mkdir IPFolder-2 
fi 

注:Ubuntuの11.10で、私は、必要に応じて適応し、21-34 -cカット使用する必要がありました。

+0

Samありがとう!それは私が探していたものです。 – bikerben

+0

アドレスを取得する方が簡単な(より信頼できる)方法は 'ifdata'をインストールし、' ifdata -pa eth0'を使うことです – Daenyth

0

ifconfigがローカライズされていることに注意してください。サムが7-17の代わりに21-34をカットしている可能性があります。

LANG= ifconfigを使用すると、どこにでも英語で表示されます。

これはifconfig have other quirksと思われます。

(これ以上のコメントではありませんが、まだコメントできません)

関連する問題