Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » UNIX » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;

Модерирует : ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154

Открыть новую тему     Написать ответ в эту тему

digital422

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Товарищи вопрошающие! Если ваша система отлична от ГНУ, и в то же время вы желаете обойтись только дефолтными средствами, указывайте и то и другое сразу, пожалуйста.


UNIX Shell

 
   Это глобальная тема по юниксовой командной оболочке, как по интерактивной работе в командной строке, так и по шелл-скриптам. Ключевые слова: sh, bash, zsh, tcsh, busybox, readline, coreutils, cp, mv, ln, rm, ls, readlink, mkdir, touch, stat, date, test, sleep, chown, chmod, chattr, dd, df, du, env, echo, cat, less, man, grep, sort, findutils, find, locate, xargs, md5sum, cmp, diff, patch, ps, kill, killall, tar, gzip, bzip2, xz, mount, fdisk, parted, mkfs, fsck, e2fsprogs, mtools, ss, netcat, netstat, rsync, ssh, scp, sftp, lftp, ncftp, time, strace.
   Неинтерактивная обработка текста (sed, awk, perl) пока тоже здесь.
   Смотри в других ветках: wget, convert, montage, mogrify и др., gs, git, 7z, p7zip, soffice, mplayer, mencoder, vlc, vim, mc, mcedit, kioclient.
 
 

Hint! Русские маны (подустаревшие, не всегда полные и не всегда для вашей системы) можно попытаться найти на Опеннете, к примеру: bash, tar, grep.

 
Готовые решения:
  • commandlinefu.com
    Крупнейшая база полезных однострочников на командной оболочке с ранжированием на основе пользовательского голосования.
     
  • shell-fu.org
    Аналогично, но поменьше и формат записей более свободный, поэтому встречаются и однострочники, и развернутые скрипты, и просто советы.
     
  • Useful one-line scripts for sed
    Почти исчерпывающий список решений для тех случаев, когда sed незаменим. Более сложные скрипты с sed.sf.net — только для тех, кто знает толк... :)

 
Учебная литература:
  • Greg’s Wiki (http://mywiki.wooledge.org)
    Наиболее обширный авторский сборник постоянно обновляющихся материалов по Башу.

    1. Bash Pitfalls
      (Частые ошибки программирования на Баше: [1], [2], [3], [4], [5] — пер. на русский по сост. на дек. 2008 г.).
      Рассмотрены преимущественно ошибки, возникающие из-за непонимания отличия шелла от «нормальных» скриптовых языков. Если вы уже владеете, например, Перлом, то это вполне может быть ваше первое руководство для ознакомления с Башем.
    2. Bash FAQ
    3. Bash Guide
    4. Bash Reference Sheet
      Шпаргалка по частым синтаксическим оборотам.

 
Классическая учебная литература:
С одной стороны не упомянуть эти издания нельзя, с другой — они настолько устарели, что едва ли их можно рекомендовать в роли учебника.

 

Смело правьте и дополняйте шапку, однако не забывайте отписываться об исправлениях и сохранять исходный вариант под #.
Первый пост темы имел вид...

Всего записей: 360 | Зарегистр. 19-04-2003 | Отправлено: 18:51 16-05-2008 | Исправлено: qw12, 09:42 24-03-2020
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
Наш сервер не подключен к интернету, но я сделал примеры сам на себя, может поможет вам понять проблему
 

Код:
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 1290
...
-rwxr-----   1 prog         370 Mar 17  2010 x
-rw-r-----   1 prog       10449 Sep  4  2018 z
-rw-rw-rw-   1 prog       21386 Sep  4  2018 zu
...
226 Transfer complete.
 
 
ftp> nlist
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
...
x
z
zu
...
226 Transfer complete.
 
 
ftp> nlist -l
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 1286
...
-rwxr-----   1 alex     prog         370 Mar 17  2010 x
-rw-r-----   1 alex     prog       10449 Sep  4  2018 z
-rw-rw-rw-   1 alex     prog       21386 Sep  4  2018 zu
...
226 Transfer complete.

 
FAR я настроил кастомной командой "NLST -al" (в старом плагине FarFTP), осталось чтоб wget как-то мог выкачивать директорию с правильным листингом...

Всего записей: 2739 | Зарегистр. 16-10-2003 | Отправлено: 08:04 16-12-2021
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Garrett

Цитата:
может поможет вам понять проблему  

Не особо, т.к. непонятно как листинг команды ftp влияет на работу wget. Вы можете использовать ftp вместо wget, но как они должны увязываться, а уж тем более с FAR для меня загадка.
Возможно, вы некорректно формулируете задачу?

Всего записей: 7741 | Зарегистр. 08-09-2001 | Отправлено: 15:27 16-12-2021
useretail



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Garrett

Цитата:
есть команда "nlist -l", которая высвечивает правильный листинг, но как это прикрутить к ФАРу и wget

очевидно что взять и добавить в опенсорсный фар

Всего записей: 4985 | Зарегистр. 14-09-2007 | Отправлено: 16:14 16-12-2021
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
С помощью wget я выкачиваю одну директорию. И на данном сервере файлы .listing в каждой директории тоже получаются без колонки owner, т.е. я потерял возможность видеть кто конкретно отвечает за каждый файл в этой директории.
 
useretail
Посмотрите конец моего поста над вашим постом.

Всего записей: 2739 | Зарегистр. 16-10-2003 | Отправлено: 07:14 17-12-2021
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Garrett

Цитата:
И на данном сервере файлы .listing в каждой директории тоже получаются без колонки owner

чем создаются файлы '*.listing'?

Всего записей: 7741 | Зарегистр. 08-09-2001 | Отправлено: 11:12 17-12-2021
Garrett

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
los
wget'ом. Он читает вывод ls и на его основании(дата и размер каждого файла) решает, что обновилось на сервере и что надо перекачать. Т.е. он перекачивает новое и старое, но измененное.
Странно, что вы не знали этого.

Всего записей: 2739 | Зарегистр. 16-10-2003 | Отправлено: 20:28 17-12-2021
los

Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Garrett

Цитата:
Странно, что вы не знали этого.

Я много чего не знаю. Например зачем вообще в этой связке команда ftp. Если проблема именно в ней.

Всего записей: 7741 | Зарегистр. 08-09-2001 | Отправлено: 23:09 17-12-2021
snoopproject

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
TERMUX
посвящается любителям CLI в знак солидарности лучшего терминала на OS Android, который испытывает «кошмарную» монополию Google.
 
управлять серверами через ssh;
скачивать ролики/отрывки с YouTube;
нарезать видео, создавать gif;
воспроизводить музыку/радио прямо в CLI;
нарезать mp3-бигфайлы (аналогов приложений на Android попросту нет);
редактировать документы;
проверять орфографию: как txt-документов, так и различных статей по url, например, проверка орфографии статей на Habr-e;
генерировать словари различной сложности;
создавать блок-схемы; графики и даже 3D-визуализацию;
тестировать интернет соединение/интерфейс (требуется частично Root);
снифить/сканировать сети (требуется частично Root);
запускать и управлять TOR-сетью;
управлять приложениями и процессами в ОС Android (требуется Root);
защищать любые данные от случайного редактирования/уничтожения;
автоматически бэкапить/шифровать по ночам любые данные в своё облако;
проводить аудит безопасности (об опасности сердить скрипт-кидди с их любимыми: «снифть, парсить, брутить, дампить, сканить, фишить»);
работать с электропочтой;
изучать UNIX/shell;
программировать на Android (на выбор пользователя. В Termux портированы несколько интерпретируемых и компилируемых языков программирования);
запускать python/php/npm скрипты;
работать с криптографией; стеганографией и цифровыми подписями;
парсить данные;
и даже запускать GNU-gui-софт из CLI.
 
https://habr.com/ru/post/652633/

Всего записей: 2 | Зарегистр. 26-12-2021 | Отправлено: 08:37 14-03-2022
i81

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго вечера, товарищи!
Помогите пожалуйста с скриптом автоматизации на Debian.  
Необходимо, в зависимости от наличия ответа на icmp запрос переписывать правило в iptables.
т.е. есть ответ от 192.168.3.18 активны правила:

Код:
 
iptables -t nat -A PREROUTING -d 11.11.11.11/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.3.18:8123
 

 
нет ответа - удаляется правило верхнее и добавляется другое:

Код:
 
iptables -t nat -A PREROUTING -d 11.11.11.11/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.1.5:8123
 

 
Как только вернулся 3.18 возвращаем маршрутизацию обратно. При том желательно, что бы не один запрос, а хотябы несколько или какое-то время...  
Получается своего рода программный кластер, с переключением нод

Всего записей: 330 | Зарегистр. 08-04-2006 | Отправлено: 19:43 13-05-2022
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Накидал прототип без каких либо тестов или проверок.
 
Скрипт гонять по крону, например.
 

Код:
#!/bin/bash
 
MAIN_IP='192.16.8.3.18'
SECONDARY_IP='192.16.8.1.5'
 
OUR_EXTERNAL_IP='11.11.11.11'
 
RULE="PREROUTING -d $OUR_EXTERNAL_IP/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination $SECONDARY_IP:8123"
 
if ping -q -c 4 -W 1 "$MAIN_IP" &>/dev/null; then
  # don't quote RULE variable
  # shellcheck disable=SC2086
  iptables -t nat -D $RULE 2>/dev/null # hide error about absent rule
else
  # don't quote RULE variable
  # shellcheck disable=SC2086
  iptables -t nat -I $RULE
fi


----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 20:02 13-05-2022
i81

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Скрипт гонять по крону, например.

т.е. он будет запускаться с периодичностью, указанной в кроне?  
 
А можете подсказать параметры живым языком, что скрипт делает, особенно условие

Всего записей: 330 | Зарегистр. 08-04-2006 | Отправлено: 20:09 13-05-2022
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
i81
Да. такой скрипт лучше запускать по внешнему таймеру, а не гонять бесконечным циклом.
 
man ping я лучше оставлю для самостоятельного изучения.
Основы shell скриптов, а здесь только они тоже лучше изучить, особенно если есть VPS во владении.
 
 
p.s. Скрипт пытается сделать 4 пинга с таймаутом ответа в 1 секунду на каждый и если хоть один потерялся то произойдёт переключение на резерв, если все 4 пинга прошли, считаем что можно использовать основной сервер.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 20:23 13-05-2022 | Исправлено: Alukardd, 20:24 13-05-2022
i81

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Основы shell скриптов, а здесь только они тоже лучше изучить, особенно если есть VPS во владении.

Оно так редко нужно... а мир не без добрых людей, как Вы.
 

Цитата:
Да. такой скрипт лучше запускать по внешнему таймеру, а не гонять бесконечным циклом.

 
Почему Вы так считаете, неужели ping такую нагрузку принесёт? Как часто по Вашему мнению стоит запускать?

Всего записей: 330 | Зарегистр. 08-04-2006 | Отправлено: 20:33 13-05-2022
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
i81
потому что под скрипт с бесконечным циклом всё равно надо будет написать systemd.unit который будет его перезапускать если с тем что случится. А если и так и так нужен unit то пусть он будет с таймером на каждые 10 секунд, например.
 
ping, понятное дело, ни какой нагрузки не создаёт.
 
Все числа и количество пингов зависят исключительно того что считать ошибкой связности и как быстро надо её обнаруживать.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 22:04 13-05-2022
i81

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Скрипт гонять по крону, например.

А в чём я неправ:
0. Создал скрипт /home/startup/claster , сделал файл выполнящимся.
1. Запускаю root@vpn:~# /home/startup/claster - работает без проблем.
2. Добавил в crontab -e строку
Код:
*/2 * * * * /home/startup/claster
 
Симулировал отключение 3.18 и сразу повалили ошибки
Цитата:
/home/startup/claster: line 17: iptables: command not found

17-я строка выходит   iptables -t nat -I $RULE
 
Ну, и обратно, тоже не работает, правда без ошибок, но не убирает альтернативный маршрут. А руками опять всё моментом и как нужно

Всего записей: 330 | Зарегистр. 08-04-2006 | Отправлено: 20:35 15-05-2022 | Исправлено: i81, 20:46 15-05-2022
urodliv



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
i81

Цитата:
crontab -e

Под кем?

----------
Очень скоро еда станет совершенно безвкусной, и тогда этот недостаток придётся компенсировать хорошо развитым воображением.

Всего записей: 6714 | Зарегистр. 29-04-2009 | Отправлено: 20:59 15-05-2022
i81

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
urodliv
Под root

Всего записей: 330 | Зарегистр. 08-04-2006 | Отправлено: 21:34 15-05-2022
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
i81
Начнём с правописания — clUster

Цитата:
 iptables: command not found  
вероятнее всего cron'у надо указать PATH, он его сильно урезает по умолчанию.
crontab -e  и дописать до правил PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 22:16 15-05-2022
i81

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
clUster
 

Ой
 

Цитата:
вероятнее всего cron'у надо указать PATH

Да, так и есть - прописал - помогло.
 
 
Добавлено:
Ещё проблема:
В случае отсутствия 3.18 скрипт при каждом запуске создаёт повторно строку маршрутизации на резервный узел, в итоге имеем:

Код:
root@vpn:~# iptables -t nat -vnL
Chain PREROUTING (policy ACCEPT 5 packets, 204 bytes)
 pkts bytes target     prot opt in     out     source               destination
   10   600 DNAT       tcp  --  *      *       0.0.0.0/0            11.11.11.11      tcp dpt:8080 to:10.8.1.5:8123
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            11.11.11.11      tcp dpt:8080 to:10.8.1.5:8123
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            11.11.11.11      tcp dpt:8080 to:10.8.1.5:8123
    1    60 DNAT       tcp  --  *      *       0.0.0.0/0            11.11.11.11      tcp dpt:8080 to:10.8.1.5:8123
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            11.11.11.11      tcp dpt:8080 to:10.8.1.5:8123
   34  1912 DNAT       tcp  --  *      *       0.0.0.0/0            11.11.11.11      tcp dpt:8080 to:192.168.3.18:8123

 
Правда потом он так же при каждом запуске по одной удаляет, но это всё равно нехорошо.
Можно как-то добавить проверку наличия маршрута до резерва и не добавлять дубль или может как-то по другому?

Всего записей: 330 | Зарегистр. 08-04-2006 | Отправлено: 04:47 16-05-2022
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
i81
Можно либо делать проверку наличия правил либо использовать его конкретный номер.
 

Код:
#!/bin/bash
 
MAIN_IP='192.16.8.3.18'
SECONDARY_IP='192.16.8.1.5'
OUR_EXTERNAL_IP='11.11.11.11'
 
if ping -q -c 4 -W 1 "$MAIN_IP" &>/dev/null; then
  iptables -t nat -R PREROUTING 1 -d $OUR_EXTERNAL_IP/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination $MAIN_IP:8123
else
  iptables -t nat -R PREROUTING 1 -d $OUR_EXTERNAL_IP/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination $SECONDARY_IP:8123
fi
Если изначально правило было добавлено при загрузке системы:
iptables -t nat -I PREROUTING 1 -d $OUR_EXTERNAL_IP/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination $MAIN_IP:8123
 
 
Тут получается что сначала мы устанавливаем правило на позицию 1. а потом скриптом переписываем именно эту позицию. Всё может пойти не так, если эта позиция другими манипуляциями с iptables будет изменена.
Либо можно в скрипте делать что-то вроде if iptables-save -t nat | grep -q " ..тут что ищем.. "; then, и дальше по тексту

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6571 | Зарегистр. 28-08-2008 | Отправлено: 18:27 16-05-2022 | Исправлено: Alukardd, 18:28 16-05-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154

Компьютерный форум Ru.Board » Операционные системы » UNIX » UNIX Shell: sh, bash, zsh; Coreutils и ко.; sed, awk, perl;


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru