Я не знаком с Администратором сети Ubuntu. Можно всегда отключать то использование:
sudo service network-manager stop
Затем использование:
sudo iwlist wlan0 scanning | grep ESSID
Видеть, можно ли даже видеть сеть.
Если так, и Вы используете wpa2, необходимо будет сделать несколько вещей. Сначала генерируйте пару ключ/значение, которую wpa_supplicant будет использовать для подключения:
sudo wpa_passphrase "mywireless_ssid" "secretpassphrase" >> /etc/wpa_supplicant.conf
Затем, избавьтесь от любого dhcp сервиса (на всякий случай, он работает),
sudo pkill dhcpcd
Наконец, попытайтесь соединиться:
wpa_supplicant -Dwext -i wlan0 -c /etc/wpa_supplicant.conf &
Я, возможно, не разветвил бы его к фону на первой попытке, только чтобы видеть, собирается ли это работать.
Для экранирования переменных, которые будут использоваться в левой и правой части s
в sed
(здесь $ lhs
и $ rhs
соответственно), вы должны сделать:
escaped_lhs=$(printf '%s\n' "$lhs" | sed 's:[][\/.^$*]:\\&:g')
escaped_rhs=$(printf '%s\n' "$rhs" | sed 's:[\/&]:\\&:g;$!s/$/\\/')
sed "s/$escaped_lhs/$escaped_rhs/"
Обратите внимание, что $ lhs
не может содержать символ новой строки.
То есть на LHS экранировать все операторы регулярного выражения (] [. ^ $ *
), сам экранирующий символ ( \
) и разделитель ( /
).
На RHS вам нужно только экранировать и
, разделитель, обратную косую черту и символ новой строки (что вы делаете, вставляя обратную косую черту в конце каждой строки, кроме последней ( $! s / $ / \\ /
)).
Предполагается, что вы используете /
в качестве разделителя в ваших командах sed
s
и что вы не включаете расширенные RE с -r
(GNU sed
/ ssed
/ ast
/ busybox sed
) или -E
( BSD, ast
, недавний GNU, недавний busybox) или PCRE с -R
( ssed
) или расширенные RE с -A
/ -X
( ast
), которые все имеют дополнительные операторы RE.
Несколько основных правил при работе с произвольными данными:
echo
sed
выполняются в той же локали, что и команда sed
, с использованием экранированных строк (и с той же командой sed
) например) $ lhs
какой-либо символ, и принять меры). Другой вариант - использовать perl
вместо sed
, передавать строки в среде и использовать \ Q
/ \ E
perl
операторы регулярного выражения для буквального восприятия строк:
A="$lhs" B="$rhs" perl -pe 's/\Q$ENV{A}\E/$ENV{B}/g'
perl
(по умолчанию) не зависит от набора символов языкового стандарта, поскольку в приведенном выше примере он рассматривает строки только как массивы байтов, не заботясь о какие символы (если есть) они могут представлять для пользователя. С sed
вы можете добиться того же, установив локаль на C
с помощью LC_ALL = C
для всех команд sed
(хотя это будет также влияют на язык сообщений об ошибках, если таковые имеются).