Это - известная ошибка. https://bugzilla.novell.com/show_bug.cgi? id=809843
Кажется, что следующее обновление устраняет проблему
Для хитрости временный проблема используйте другое имя вместо ethX.
Примечание: YAST настроит право сетей, но захочет, отображают настройки. (Это может быть также зафиксировано),
Пример
Копия в/etc/sysconfig/network
ifcfg-eth0 to ifcfg-net0 and ifcfg-eth1 to ifcfg-net1
Редактирование/etc/udev/rules.d/70-persistent-net.rules
SUBSYSTEM=="net", ... NAME="eth0"
SUBSYSTEM=="net", ... NAME="eth1"
кому:
SUBSYSTEM=="net", ... NAME="net0"
SUBSYSTEM=="net", ... NAME="net1"
Если вы не хотите, чтобы вас каждый раз оспаривали ваш пароль, я бы рекомендовал установить его на NOPASSWD
в вашем файле /etc/sudoers
, а не жестко кодировать ваш пароль в ваших логинах. По крайней мере в этом пути пароль вашего основного логина останется нетронутым и не будет полностью раскрыт в .bashrc
.
Чтобы внести это изменение, выполните команду sudo visudo
и измените запись учетных записей пользователей на следующее:
userX ALL=(ALL) NOPASSWD: ALL
-121--96819- Это зависит от вашего распространения или ОС. sshd
будет регистрировать каждое имя входа где-либо и будет включать соответствующий IP-адрес в имя входа в следующем формате:
Aug 20 15:56:53 machine sshd[2728]: Accepted publickey for root from 192.168.1.2 port 49297
В системах, основанных на systemd
, используйте journalctl
:
journalctl /usr/bin/sshd
для вывода списка всех сообщений журнала из исполняемого файла sshd
. Это значение можно определить для корневых имен входа или других критериев и ограничить по дате с помощью -since
и --до
(см. man journalctl
).
Альтернативно и исторически сообщения регистрируются (обычно) где-то в /var/log
. Обычно сообщения sshd
поступают в /var/log/auth.log
, но точный файл может существенно отличаться. Что бы это ни было:
grep sshd /var/log/auth.log
даст вам в целом эквивалентный выход для версии journalctl
.
POSIX определил, что в может использовать переменную среды SHELL в качестве альтернативы /bin/sh
, но не ограничил ее:
SHELL
Определите имя интерпретатора команд, используемого для вызова на работе. Если переменная не задана или имеет значение null, следует использовать sh. Если это так Наборы значения, отличного от имени для sh, реализация должна одно из следующих: используйте эту оболочку; использовать sh; использовать оболочку входа из пользовательскую базу данных; или любой из предыдущих, сопровождаемых предупреждением диагностика о которой была выбрана.
Некоторая реализация at может дать вам возможность выбрать, какую оболочку вы хотите запустить, как -k
для оболочки Korn, -c
для оболочки C. И не вся реализация на
позволяет SHELL
заменить sh
. Так POSIX также гарантировал надежный способ использования другой оболочки явным образом называть ее :
Некоторые реализации не допускают подмены разных оболочек с использованием SHELL. Системы System V, например, использовали оболочку входа в систему значение для пользователя в/etc/passwd. Для надежного выбора другой команды интерпретатор, пользователь должен включить его в сценарий, например:
$ at 1800
myshell myscript
задание EOT
... в... $
Простой способ использования bash
для запуска сценария - передача bash script
в качестве stdin в
:
echo "bash /path/to/yourscript" | at <time>
Пример:
echo "bash /path/to/yourscript" | at 16:30
запустит bash/path/to/yourscript
в 16:30 сегодня.
Мой ответ аналогичен ответу Гнука, но я считаю, что у меня есть лучшее объяснение «Почему?»
Когда вы говорите в… -f /path/to/my/script.sh
,
вы указываете на
читать /path/to/my/script.sh
.
Он где-то копирует ваш скрипт (возможно, где-то в / var / spool / cron
)
так что atd
, демон заданий at
, может передать содержимое скрипта в / bin / sh
.
На данный момент строка #! / Bin / bash
she-bang - это просто комментарий,
и ваше использование [[…]]
является ошибкой.
Вы хотите не передавать по адресу
содержимое вашего скрипта,
но дайте ему имя ,
$ echo /path/to/my/script.sh | at 1:30 am today
или
$ at 1:30 am today /path/to/my/script.sh Ctrl+D
Таким образом, / bin / sh
увидит /path/to/my/script.sh
и выполнит его как команду.
И затем строка she-bang выполнит свою работу, вызывая вызов bash
.
P.S. В моем ответе (как и в ответе Гнука) есть "особенность", заключающаяся в том, что
если вы измените сценарий с сегодняшнего дня до 1:30 утра,
atd
запустит измененную версию.
(Это отличается от вашего подхода с использованием -f
,
где в
создает копию вашего скрипта при запуске в
.)
В частности, если вы удалите или переименуете скрипт, ничего не запустится.
читать команды из стандартного ввода или указанного файла, которые должны быть выполнены позже, с использованием / bin / sh .
POSIX определяет на входе
как:
текстовый файл, состоящий из команд, приемлемых для командного языка оболочки, описанного в Командном языке оболочки .
То есть требуется, чтобы был сценарием POSIX sh
. Bash разрешает использование башизмов, даже если он запущен как sh
, но dash
является строгим. Сценарий запускается не как исполняемый файл, а напрямую с sh
, поэтому, например, произвольный двоичный файл или сценарий Python также не будут работать.
Что вы можете сделать, так это заставить себя bash
в любом случае. Что-то вроде:
[ "$BASH_VERSION" ] || exec bash "/path/to/script"
в верхней части файла должен иметь сценарий повторного выполнения с bash
, когда он еще не интерпретируется таким образом. Оболочка не будет генерировать синтаксические ошибки для кода, до которого не доходит выполнение, поэтому дальнейшее использование [[
не имеет значения. Вы можете использовать $ 0
вместо пути, но это кажется несовместимым между реализациями в
, и ни одна из спецификаций не подразумевает, что он должен работать, поэтому путь будет более надежным. .