# [SOLVED] Verschiedene Netzwerkprofile beim Booten wählen.

## eASy_

Hallo,

ich habe hier mehrere Laptops unter meine "Fittiche" und möchte diesen nun verschiedene Netzwerkprofile geben.

Da die User hier nicht unbedingt die hellsten sind, möchte ich dies folgendermassen realisieren:

Per GRUB mehrere Menüeintrage (Home, Office, HotSpot, etc...) erstellen, und in den Parameter zB ifenv=home mit anhängen.

Eigenes Shellscript schreiben, das diesen Parameter auswertet, das entsprechende Device (ethX) mit den entsprechenden

Einstellungen (static, DHCP, etc..) versieht.

Nun kommt mein Problem. Ich möchte dies gerne so integrieren, dass ich keine bestehenden init.d o.ä. Scripte anpassen muss.

Am liebst wäre es mir, wenn ich in /etc/conf.d/net etwa sowas eintragen könnte:

```
config_eth0=( "program:/usr/sbin/mynetscript.sh eth0" )

config_eth1=( "program:/usr/sbin/mynetscript.sh eth1" )
```

Meine Frage ist nun, da ich in der net.example nichts entsprechendes gefunden habe, ist dies Möglich, und wenn ja, wie?

Für Tipps und Hinweise bin ich sehr dankbar.  :Smile: 

Sonnige Grüsse...Last edited by eASy_ on Tue Apr 04, 2006 1:42 pm; edited 1 time in total

----------

## deejay

Moin,

guck dir mal quickswitch an. Da kannst du im grub gleich mit angeben, welches der Profile er

beim booten starten soll.

SWITCHTO=whatever

Gruß

deejay

----------

## firefly

du kannst auch runlevel bezogene configs anlegen.

sprich du hast 2 runlevels(das sind deine 2 profile): home und work

so kannst du z.b. für die netzwerk-konfiguration folgendes tun:

du erstellst dir die dateien /etc/conf.d/net.home bzw. net.work.

so je nach dem in welchen runlevel man sich befindet, werten die net-init-scripte entwerder die net.home oder net.work aus.

Wenn du dich in einem runlevel befindet, für den du keine alternativve konfigurations datei angelegt hat, nehmen die init-scripte die default datei(hier /etc/conf.d/net)

der relevante teil aus der /etc/conf.d/rc:

```
# RC_USE_CONFIG_PROFILE allows you to have different /etc/conf.d files 

# based on your runlevel - if a conf.d file for your profile does not exist

# then we try and use the default one.

# To enable runlevel selection at boot, append "softlevel=foobar" to your

# kernel line to change to the foobar runlevel.  Here we would search for

# /etc/conf.d/<service>.foobar config files before trying to use the default

# /etc/conf.d/<service>.

# Note that it is only active if 'softlevel' was specified via the kernel line,

# and it is intended to use for different grub/lilo entries to specify config

# changes for say laptops between home and work, where you would have setup

# 'work' and 'home' runlevels, with /etc/conf.d/*.<runlevel> as needed.

RC_USE_CONFIG_PROFILE="yes"
```

PS: und mit dem kernel-boot parameter softlevel=<softlevelname> (z.b. softlevel=home) kannst du beim booten festlegen welcher (soft)runlevel verwendet werden soll.

----------

## eASy_

Hallo,

erstmal danke für die Beiträge. Leider wars nicht dabei, wie ich es mir vorgestellt habe.

Also kurzerhand die init.d-Doku geschnappt und ein kleines Script geschrieben:

```
nano -w /etc/init.d/netswitcher
```

Diese Datei mit folgendem füllen:

```
#!/sbin/runscript

depend()

{

  before net

}

start()

{

  local IFENV

  IFENV=`cat /proc/cmdline | sed 's/\ /\n/g' | grep '^IFENV=' | cut -d'=' -f2`

  ebegin "Switching Network-Environment to $IFENV"

  if [ ! -f "/etc/conf.d/net.$IFENV" ]

  then

    eend 1 "File not found..."

  else

    cp "/etc/conf.d/net.$IFENV" "/etc/conf.d/net"

  fi

  eend 0

}
```

Dann noch eben schnell:

```
chmod 755 /etc/init.d/netswitcher

rc-upadte add netswitcher boot
```

Nun kann man bei Grub/LILO in den Boot-Einträgen folgendes mit angeben:

```
IFENV=home
```

Damit würde das Script /etc/conf.d/net.$IFENV (in diesem Falle home) nach /etc/conf.d/net kopieren,

und zwar bevor die Netzwerke hochgenommen werden.

Sonnige Grüsse...

----------

## slick

 *eASy_ wrote:*   

> erstmal danke für die Beiträge. Leider wars nicht dabei, wie ich es mir vorgestellt habe.

 

LOL. Du hast das gleiche mit Deiner Lösung umgesetzt wie firefly es beschrieben hat. Anscheinend hast Du die runlevel nicht korrekt verstanden. Der einzige Unterschied zu seiner Lösung: firefly setzt die runlevel ein um das zu handeln und Du ein selbst geschriebenes Initscript. Vorteil bei firefly ist die saubere Gentoo-Lösung, Vorteil bei Dir die Möglichkeit für "unbegrenzt" viele Netzkonfigurationen.

 *firefly wrote:*   

> 
> 
> ```
> # RC_USE_CONFIG_PROFILE allows you to have different /etc/conf.d files 
> 
> ...

 

Da sieht man mal wieder was einem so entgeht wenn man sich nicht die ganzen Files mal genauer anschaut. Danke für den Tipp @ firefly

----------

## firefly

 :Smile:  auch mit der gentoo-lösung ist eine unbegrenzte anzahl von netzwerk-konfigurationen möglich  :Wink:  nur der ordner /etc/runlevels behinhaltet dann einen haufen unterordner welche den selben inhalt haben nur der name ist anders  :Wink: 

Aber mit diese lösung ist es auch zusätzlich möglich, dienste in abhängigkeit der netzwerk-konfiguration zu starten/stoppen.

Da es sich ja hier um die softlevels, welche in gentoo zum einsatz kommen, verwendet werden.

----------

## slick

 :Embarassed:  ui... da habe ich wohl auch nicht richtig aufgepaßt. Aja, die runlevel sind begrenzt (/etc/inittab) aber nicht die softlevel von Gentoo?! Stimmt eigentlich...

----------

## firefly

tja da hättest du wohl nicht zu lange auf das "süße" rosa pferdchien schauen sollen  :Wink: 

----------

