yast -i hostapd
driver=nl80211 bridge=br0 channel=3 hw_mode=g auth_algs=1
hostapd /etc/hostapd.conf
убедитесь, что вы видите WLAN с тестом ESSID, например на мобильном телефоне
добавьте сетевой мост на свой компьютер с Linux (при условии, что wlan0 является вашим беспроводным сетевым устройством и 192.168.0.5 - это бесплатный IP-адрес в вашей подсети):
brctl addif br0 wlan0 ifconfig br0 192.168.0.5
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE iptables -A FORWARD -i br0 -j ACCEPT iptables -A FORWARD -i wlan0 -j ACCEPT
Теперь вы захотите, чтобы ваш компьютер Linux был как dhcp-сервером, чтобы подключаемые устройства получали информацию о том, что этот компьютер является их шлюзом.
Теперь вы захотите ввести функции безопасности, такие как WPA, чтобы ваше общение не могло быть прервано.
Я написал это в блоге на http://www.linuxintro.org/wiki/Set_up_a_wireless_accesspoint
Я подозреваю, что это та часть эпизода, которая вас зацепила:
The words that are not variable assignments or redirections are expanded (see Shell Expansions). If any words remain after expansion, the first word is taken to be the name of the command and the remaining words are the arguments
Это из справочного руководства по Bash в разделе, посвященном расширению простых команд.
В примере cmd=bash
переменные окружения не установлены, и bash обрабатывает командную строку, расширяя параметры, оставляя bash -c "echo hi"
.
В примере prefix=hello=hi
в первом проходе опять нет назначений переменных, поэтому обработка продолжается до раскрытия параметров, в результате чего получается первое слово hello=hi
.
После обработки назначений переменных они не -повторно обрабатываются во время выполнения команды.
См. обработку и ее результаты вset -x
:
$ prefix=hello=hi
+ prefix=hello=hi
$ $prefix bash -c 'echo $hello'
+ hello=hi bash -c 'echo $hello'
-bash: hello=hi: command not found
$ hello=42 bash -c 'echo $hello'
+ hello=42
+ bash -c 'echo $hello'
42
Для более безопасного варианта «расширения переменных» -как -«переменных среды», чем eval
, рассмотрите предложение wjandrea оenv
:
prefix=hello=hi
env "$prefix" bash -c 'echo "$hello"'
hi
Это не совсем -назначение переменной строки команды, поскольку мы используем основную функцию утилиты env
по назначению переменных окружения команде, но она выполняет ту же цель. Переменная $prefix
расширяется во время обработки строки команды -, предоставляя имя=значение env
, который передает его bash
.
Потому что $prefix
не является присваиванием. У @Jeff более длинное объяснение .
Вместо этого вы можете сделать то же самое с функцией:
$ prefix() { hello=hi "$@"; }
$ prefix bash -c 'echo "$hello"'
hi
...и вы даже можете сложить их, если хотите:
$ foo() { foo=123 "$@"; }
$ bar() { bar=456 "$@"; }
$ foo bar bash -c 'echo "$bar $foo"'
456 123