Сохраните выполнение сценария удара при прерывании через CTRL+X или CTRL+C

Вам нужно процитировать одну строку ограничения документа, иначе будет включена подстановка параметров. Это должно сработать:

#!/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"
0
05.02.2015, 12:18
2 ответа

Может быть, это не очень оригинально, но я думаю, что список тем из LFS101x.2 Введение в Linux курс может помочь:

  1. Глава 01: Linux Foundation (не очень полезен)
  2. Глава 02: Основные принципы и концепции Linux

Раздел 1: История Linux

Раздел 2: Основные принципы Linux

Раздел 3: Сообщество Linux

Раздел 4: Терминология Linux

Раздел 5: Дистрибутивы Linux

  1. Глава 03: Структура и установка Linux

Раздел 1: Основы файловой системы Linux

Раздел 2: Процесс загрузки

Раздел 3: Установка дистрибутива Linux

  1. Глава 04: Графический интерфейс

Раздел 1: Управление сеансами

Раздел 2: Основные операции

Раздел 3: Графический рабочий стол

  1. Глава 05: Конфигурация системы из графического интерфейса

Раздел 1: Система, дисплей, дата и время окружения

Раздел 2: Диспетчер сети

Раздел 3: Установка и обновление программного обеспечения

  1. Глава 06: Поиск документации по Linux

Раздел 1: Источники документации

Раздел 2: Справочная информация

Раздел 3: Информация о GNU

Раздел 4: Справочная команда

Раздел 5: Другие источники документации

  1. Глава 07: Операции с командной строкой

Раздел 2: Основные операции

Раздел 3: Поиск файлов

Раздел 4: Работа с файлами

Раздел 5: Установка программного обеспечения

  1. Глава 08: Файловые операции

Раздел 1: Файловые системы

Раздел 2: Архитектура файловых систем

Раздел 3: Сравнение файлов и типов файлов

Раздел 4: Резервное копирование и сжатие данных

  1. Глава 09: Пользовательская среда

Раздел 1: Учетные записи

Раздел 2: Переменные среды

Раздел 3: Отзыв предыдущих команд

Раздел 4: Псевдонимы команд

Раздел 5: Права доступа к файлам

  1. Глава 10: Текстовые редакторы

Раздел 1: Основные редакторы: nano и gedit

Раздел 2: Более продвинутые редакторы: vi и emacs

  1. Глава 11: Принципы локальной безопасности

Раздел 1: Общие сведения о безопасности Linux

Раздел 2: Общие сведения об использовании корневой учетной записи

Раздел 3: Использование sudo, важность изоляции процессов, ограничение Аппаратный доступ и поддержание систем в актуальном состоянии

Раздел 4: Работа с паролями

Раздел 5: Защита процесса загрузки и аппаратных ресурсов

  1. Глава 12: Сетевые операции

Раздел 1: Введение в сеть

Раздел 2: Браузеры

Раздел 3: Передача файлов

  1. Глава 13: Обработка текста

Раздел 1: cat and echo

Раздел 2: sed and awk

Раздел 3: Утилиты для манипулирования файлами

Раздел 4: grp

Раздел 5: Различные текстовые утилиты

Раздел 6: Работа с большими файлами и текстовыми утилитами

  1. Глава 14: Печать

Раздел 1: Конфигурация

Раздел 2: Операции печати

Раздел 3: Обработка файлов Postscript и PDF

  1. Глава 15: Сценарий Bash Shell

Раздел 1: Функции и возможности

Раздел 2: Синтаксис

Раздел 3: Конструкции

  1. Глава 16: Расширенный сценарий Bash

Раздел 1: Манипуляция последовательностями

Раздел 2:Логические выражения

Раздел 3: Оператор обращения

Раздел 4: Циклические конструкции

Раздел 5: Отладка сценариев

Раздел 6: Некоторые дополнительные полезные методы

  1. Глава 17: Процессы

Раздел 1: Введение в процессы и атрибуты процессов

Раздел 2: Перечисление процессов

Раздел 3: Метрики процессов и управление процессами

Раздел 4: Запуск процессов в будущем

  1. Глава 18: Общие приложения

Раздел 1: Интернет-приложения

Раздел 2: Приложения для повышения производительности и разработки

Раздел 3: Мультимедийные приложения

Раздел 4: Графические редакторы и утилиты

-121--252371-

Можно использовать экранную утилиту. от man page:

ОПИСАНИЕ Screen - это полноэкранный менеджер окон, который мультиплексирует физический терминал между несколькими процессами (обычно интерактивными). оболочки).

-121--199953-

Как только завершит задание с помощью CTRL + C , оно будет прервано, и вы не сможете сказать мертвому заданию продолжить работу и забрать его.

Правильный термин - запустить задание в фоновом режиме, что можно сделать заранее:

 ./script &

Вы можете использовать это в сочетании с nohup , чтобы сделать процесс невосприимчивым к зависанию, он продолжит работать, даже если вы выйдете из сеанса bash:

 nohup ./script &

Если сценарий уже запущен, можно приостановить задание основной системы с помощью CTRL + Z и дать указание продолжить работу в фоновом режиме с помощью bg

В главе управление заданием из руководства bash.

7
28.01.2020, 02:14

Ключевой пункт в ответе муру является то, что для получения обратной косой черты в 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. Глава 01: Linux Foundation (не очень полезен)
  2. Глава 02: Основные принципы и концепции Linux

Раздел 1: История Linux

Раздел 2: Основные принципы Linux

Раздел 3: Сообщество Linux

Раздел 4: Терминология Linux

Раздел 5: Дистрибутивы Linux

  1. Глава 03: Структура и установка Linux

Раздел 1: Основы файловой системы Linux

Раздел 2: Процесс загрузки

Раздел 3: Установка дистрибутива Linux

  1. Глава 04: Графический интерфейс

Раздел 1: Управление сеансами

Раздел 2: Основные операции

Раздел 3: Графический рабочий стол

  1. Глава 05: Конфигурация системы из графического интерфейса

Раздел 1: Система, дисплей, дата и время окружения

Раздел 2: Диспетчер сети

Раздел 3: Установка и обновление программного обеспечения

  1. Глава 06: Поиск документации по Linux

Раздел 1: Источники документации

Раздел 2: Справочная страница

Раздел 3: Информация о GNU

Раздел 4: Справочная команда

Раздел 5: Другие источники документации

  1. Глава 07: Операции с командной строкой

Раздел 2: Основные операции

Раздел 3: Поиск файлов

Раздел 4: Работа с файлами

Раздел 5: Установка программного обеспечения

  1. Глава 08: Файловые операции

Раздел 1: Файловые системы

Раздел 2: Архитектура файловых систем

Раздел 3: Сравнение файлов и типов файлов

Раздел 4: Резервное копирование и сжатие данных

  1. Глава 09: Пользовательская среда

Раздел 1: Учетные записи

Раздел 2: Переменные среды

Раздел 3: Отзыв предыдущих команд

Раздел 4: Псевдонимы команд

Раздел 5: Права доступа к файлам

  1. Глава 10: Текстовые редакторы

Раздел 1: Основные редакторы: nano и gedit

Раздел 2: Более продвинутые редакторы: vi и emacs

  1. Глава 11: Принципы локальной безопасности

Раздел 1: Понимание безопасности Linux

Раздел 2:Понимание использования корневой учетной записи

Раздел 3: Использование sudo, важность изоляции процесса, ограничение Аппаратный доступ и поддержание систем в актуальном состоянии

Раздел 4: Работа с паролями

Раздел 5: Защита процесса загрузки и аппаратных ресурсов

  1. Глава 12: Сетевые операции

Раздел 1: Введение в сеть

Раздел 2: Браузеры

Раздел 3: Передача файлов

  1. Глава 13: Обработка текста

Раздел 1: cat and echo

Раздел 2: sed and awk

Раздел 3: Утилиты для манипулирования файлами

Раздел 4: grep

Раздел 5: Различные текстовые утилиты

Раздел 6: Работа с большими файлами и текстовыми утилитами

  1. Глава 14: Печать

Раздел 1: Конфигурация

Раздел 2: Операции печати

Раздел 3: Обработка файлов Postscript и PDF

  1. Глава 15: Bash Shell Scripting

Раздел 1: Функции и возможности

Раздел 2: Синтаксис

Раздел 3: Конструкции

  1. Глава 16: Расширенные сценарии Bash

Раздел 1: Манипуляция последовательностями

Раздел 2: Логические выражения

Раздел 3: Пример

Раздел 4: Цикловые конструкции

Раздел 5: Отладка сценариев

Раздел 6: Некоторые дополнительные полезные методы

  1. Глава 17: Процессы

Раздел 1: Введение в процессы и атрибуты процессов

Раздел 2: Список процессов

Раздел 3: Метрики процессов и управление процессами

Раздел 4: Запуск процессов в будущем

  1. Глава 18: Общие приложения

Раздел 1: Приложения для Интернета

Раздел 2: Приложения для повышения производительности и разработки

Раздел 3: Мультимедийные приложения

Раздел 4: Графические редакторы и утилиты

-121--252371-

Можно использовать экранную утилиту. от man page:

ОПИСАНИЕ Screen - это полноэкранный менеджер окон, который мультиплексирует физический терминал между несколькими процессами (обычно интерактивными). оболочки).

0
28.01.2020, 02:14

Теги

Похожие вопросы