Вам нужно процитировать одну строку ограничения документа, иначе будет включена подстановка параметров. Это должно сработать:
#!/bin/bash
cat server | while read line
do
/usr/bin/sshpass -e ssh -t -q -o StrictHostKeyChecking=no root@$line <<'EOF'
echo successfully logged in $line
MYIP=$(ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p')
for i in 151 152
do
echo 192.168.229.$i >> errips
done
for data in `cat errips`
do
echo data currently has $data
grep $data /etc/hosts
if [ $? -eq 0 ]
then
sed -i "s/$data/$MYIP/g" /etc/hosts
echo "completed"
unset MYIP
rm -rf errips
exit 0
fi
done
EOF
done
Обратите внимание на одиночные кавычки вокруг EOF. Для дальнейшего освещения, попробуйте следующее:
/usr/bin/sshpass -e ssh -t -q -o StrictHostKeyChecking=no root@<your_ip> 'k=1; echo $k'
/usr/bin/sshpass -e ssh -t -q -o StrictHostKeyChecking=no root@<your_ip> "k=1; echo $k"
/usr/bin/sshpass -e ssh -t -q -o StrictHostKeyChecking=no root@<your_ip> "k=1; echo \$k"
Может быть, это не очень оригинально, но я думаю, что список тем из LFS101x.2 Введение в Linux курс может помочь:
Раздел 1: История Linux
Раздел 2: Основные принципы Linux
Раздел 3: Сообщество Linux
Раздел 4: Терминология Linux
Раздел 5: Дистрибутивы Linux
Раздел 1: Основы файловой системы Linux
Раздел 2: Процесс загрузки
Раздел 3: Установка дистрибутива Linux
Раздел 1: Управление сеансами
Раздел 2: Основные операции
Раздел 3: Графический рабочий стол
Раздел 1: Система, дисплей, дата и время окружения
Раздел 2: Диспетчер сети
Раздел 3: Установка и обновление программного обеспечения
Раздел 1: Источники документации
Раздел 2: Справочная информация
Раздел 3: Информация о GNU
Раздел 4: Справочная команда
Раздел 5: Другие источники документации
Раздел 2: Основные операции
Раздел 3: Поиск файлов
Раздел 4: Работа с файлами
Раздел 5: Установка программного обеспечения
Раздел 1: Файловые системы
Раздел 2: Архитектура файловых систем
Раздел 3: Сравнение файлов и типов файлов
Раздел 4: Резервное копирование и сжатие данных
Раздел 1: Учетные записи
Раздел 2: Переменные среды
Раздел 3: Отзыв предыдущих команд
Раздел 4: Псевдонимы команд
Раздел 5: Права доступа к файлам
Раздел 1: Основные редакторы: nano и gedit
Раздел 2: Более продвинутые редакторы: vi и emacs
Раздел 1: Общие сведения о безопасности Linux
Раздел 2: Общие сведения об использовании корневой учетной записи
Раздел 3: Использование sudo, важность изоляции процессов, ограничение Аппаратный доступ и поддержание систем в актуальном состоянии
Раздел 4: Работа с паролями
Раздел 5: Защита процесса загрузки и аппаратных ресурсов
Раздел 1: Введение в сеть
Раздел 2: Браузеры
Раздел 3: Передача файлов
Раздел 1: cat and echo
Раздел 2: sed and awk
Раздел 3: Утилиты для манипулирования файлами
Раздел 4: grp
Раздел 5: Различные текстовые утилиты
Раздел 6: Работа с большими файлами и текстовыми утилитами
Раздел 1: Конфигурация
Раздел 2: Операции печати
Раздел 3: Обработка файлов Postscript и PDF
Раздел 1: Функции и возможности
Раздел 2: Синтаксис
Раздел 3: Конструкции
Раздел 1: Манипуляция последовательностями
Раздел 2:Логические выражения
Раздел 3: Оператор обращения
Раздел 4: Циклические конструкции
Раздел 5: Отладка сценариев
Раздел 6: Некоторые дополнительные полезные методы
Раздел 1: Введение в процессы и атрибуты процессов
Раздел 2: Перечисление процессов
Раздел 3: Метрики процессов и управление процессами
Раздел 4: Запуск процессов в будущем
-121--252371-Раздел 1: Интернет-приложения
Раздел 2: Приложения для повышения производительности и разработки
Раздел 3: Мультимедийные приложения
Раздел 4: Графические редакторы и утилиты
Можно использовать экранную утилиту. от man page:
-121--199953-ОПИСАНИЕ Screen - это полноэкранный менеджер окон, который мультиплексирует физический терминал между несколькими процессами (обычно интерактивными). оболочки).
Как только завершит задание с помощью CTRL + C , оно будет прервано, и вы не сможете сказать мертвому заданию продолжить работу и забрать его.
Правильный термин - запустить задание в фоновом режиме, что можно сделать заранее:
./script &
Вы можете использовать это в сочетании с nohup
, чтобы сделать процесс невосприимчивым к зависанию, он продолжит работать, даже если вы выйдете из сеанса bash:
nohup ./script &
Если сценарий уже запущен, можно приостановить задание основной системы с помощью CTRL + Z и дать указание продолжить работу в фоновом режиме с помощью bg
В главе управление заданием из руководства bash.
Ключевой пункт в ответе муру является то, что для получения обратной косой черты в FS
regex необходимо записать двойную обратную косую черту \\
. Это потому, что обратная косая черта используется как побег символ на двух разных уровнях.
Одиночная обратная косая черта в последовательность будет рассматриваться как ускользающая от следующего символа, поэтому нам нужно уйти от самой обратной косой черты, чтобы получить единственную обратную косую черту в регексе. И тогда , что обратная косая черта уйдет от следующего символа в пределах regex.
Как я сказал в комментарии, нет никакой разницы между FS = 'ax\*'
и FS = 'ax *'
, потому что \*
рассматривается как *
, но неловко напечатает предупреждение на этот счет. Если требуется поместить литерал *
в FS
, необходимо использовать двойную обратную косую черту, например FS = 'ax\\*'
разделится на ax *
.
Может быть, некоторые примеры сделают все это немного яснее.
#!/usr/bin/env bash
s='123abcd
123axbcd
123axxbcd
123ax*bcd
123ax**bcd'
printf "%s\n\n" "$s"
awk -F 'ax*' 'BEGIN{printf "FS=[%s]\n", FS};{printf "[%s] [%s]\n", $1, $2}' <<< "$s"
echo
awk 'BEGIN{FS="ax*"; printf "FS=[%s]\n", FS};{printf "[%s] [%s]\n", $1, $2}' <<< "$s"
echo
awk -F 'ax\*' 'BEGIN{printf "FS=[%s]\n", FS};{printf "[%s] [%s]\n", $1, $2}' <<< "$s"
echo
awk 'BEGIN{FS="ax\*"; printf "FS=[%s]\n", FS};{printf "[%s] [%s]\n", $1, $2}' <<< "$s"
echo
awk -F 'ax\\*' 'BEGIN{printf "FS=[%s]\n", FS};{printf "[%s] [%s]\n", $1, $2}' <<< "$s"
echo
awk 'BEGIN{FS="ax\\*"; printf "FS=[%s]\n", FS};{printf "[%s] [%s]\n", $1, $2}' <<< "$s"
echo
вывод
123abcd
123axbcd
123axxbcd
123ax*bcd
123ax**bcd
FS=[ax*]
[123] [bcd]
[123] [bcd]
[123] [bcd]
[123] [*bcd]
[123] [**bcd]
FS=[ax*]
[123] [bcd]
[123] [bcd]
[123] [bcd]
[123] [*bcd]
[123] [**bcd]
awk: warning: escape sequence `\*' treated as plain `*'
FS=[ax*]
[123] [bcd]
[123] [bcd]
[123] [bcd]
[123] [*bcd]
[123] [**bcd]
awk: warning: escape sequence `\*' treated as plain `*'
FS=[ax*]
[123] [bcd]
[123] [bcd]
[123] [bcd]
[123] [*bcd]
[123] [**bcd]
FS=[ax\*]
[123abcd] []
[123axbcd] []
[123axxbcd] []
[123] [bcd]
[123] [*bcd]
FS=[ax\*]
[123abcd] []
[123axbcd] []
[123axxbcd] []
[123] [bcd]
[123] [*bcd]
-121--97760- Может быть не очень оригинальным, но я думаю, что список тем из LFS101x.2 Введение в Linux курс может помочь:
Раздел 1: История Linux
Раздел 2: Основные принципы Linux
Раздел 3: Сообщество Linux
Раздел 4: Терминология Linux
Раздел 5: Дистрибутивы Linux
Раздел 1: Основы файловой системы Linux
Раздел 2: Процесс загрузки
Раздел 3: Установка дистрибутива Linux
Раздел 1: Управление сеансами
Раздел 2: Основные операции
Раздел 3: Графический рабочий стол
Раздел 1: Система, дисплей, дата и время окружения
Раздел 2: Диспетчер сети
Раздел 3: Установка и обновление программного обеспечения
Раздел 1: Источники документации
Раздел 2: Справочная страница
Раздел 3: Информация о GNU
Раздел 4: Справочная команда
Раздел 5: Другие источники документации
Раздел 2: Основные операции
Раздел 3: Поиск файлов
Раздел 4: Работа с файлами
Раздел 5: Установка программного обеспечения
Раздел 1: Файловые системы
Раздел 2: Архитектура файловых систем
Раздел 3: Сравнение файлов и типов файлов
Раздел 4: Резервное копирование и сжатие данных
Раздел 1: Учетные записи
Раздел 2: Переменные среды
Раздел 3: Отзыв предыдущих команд
Раздел 4: Псевдонимы команд
Раздел 5: Права доступа к файлам
Раздел 1: Основные редакторы: nano и gedit
Раздел 2: Более продвинутые редакторы: vi и emacs
Раздел 1: Понимание безопасности Linux
Раздел 2:Понимание использования корневой учетной записи
Раздел 3: Использование sudo, важность изоляции процесса, ограничение Аппаратный доступ и поддержание систем в актуальном состоянии
Раздел 4: Работа с паролями
Раздел 5: Защита процесса загрузки и аппаратных ресурсов
Раздел 1: Введение в сеть
Раздел 2: Браузеры
Раздел 3: Передача файлов
Раздел 1: cat and echo
Раздел 2: sed and awk
Раздел 3: Утилиты для манипулирования файлами
Раздел 4: grep
Раздел 5: Различные текстовые утилиты
Раздел 6: Работа с большими файлами и текстовыми утилитами
Раздел 1: Конфигурация
Раздел 2: Операции печати
Раздел 3: Обработка файлов Postscript и PDF
Раздел 1: Функции и возможности
Раздел 2: Синтаксис
Раздел 3: Конструкции
Раздел 1: Манипуляция последовательностями
Раздел 2: Логические выражения
Раздел 3: Пример
Раздел 4: Цикловые конструкции
Раздел 5: Отладка сценариев
Раздел 6: Некоторые дополнительные полезные методы
Раздел 1: Введение в процессы и атрибуты процессов
Раздел 2: Список процессов
Раздел 3: Метрики процессов и управление процессами
Раздел 4: Запуск процессов в будущем
-121--252371-Раздел 1: Приложения для Интернета
Раздел 2: Приложения для повышения производительности и разработки
Раздел 3: Мультимедийные приложения
Раздел 4: Графические редакторы и утилиты
Можно использовать экранную утилиту. от man page:
ОПИСАНИЕ Screen - это полноэкранный менеджер окон, который мультиплексирует физический терминал между несколькими процессами (обычно интерактивными). оболочки).