LINUX.ORG.RU

Избранные сообщения dober

Как маркировать входящий через NAT трафик?

Форум — Admin

Доброго времени суток!

Нужно в iptables промаркировать входящий через NAT трафик, для последующего использования в tc.

Пытаюсь сделать так:

# Set default policies for the INPUT, FORWARD and OUTPUT chains
$IPTABLES -P FORWARD DROP
# FORWARD chain
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
$IPTABLES -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -p ALL -i $LAN_IFACE -m set --match-set whitelist src,src -j fw_allow
$IPTABLES -A FORWARD -p ALL -m set --match-set whitelist dst -j  MARK --set-mark 10
Ничего не получается:
0     0 MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0            match-set whitelist dst MARK set 0xa
Расскажите, плз, почему?

Сет whitelist содержит пару ip,mac.

К слову, пытался так же сделать с цепочкой OUTPUT. Тоже никакого эффекта.

 

fractaler
()

Python-скртипт в демоны и подавить его вывод

Форум — Desktop

Есть питоноскрипт - https://gist.github.com/anonymous/5152863 и есть цель - заставить его работать все время работы компьютера на Debian 6. Я попытался исправить пример скрипта /etc/init.d/skeleton:

root@debian-gateway:~# cat /etc/init.d/xmppip
#! /bin/sh
### BEGIN INIT INFO
# Provides:          xmppip
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Script to run xmppip.py jabber-bot as daemon
# Description:       Similary with short
### END INIT INFO

# Author: kostett <kostett@siemenz.ru>
#
# Please remove the "Author" lines above and replace them
# with your own name if you copy and modify this script.

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="XMPP IP-bot"
NAME=xmppip
DAEMON=/usr/bin/python2.6
DAEMON_ARGS="/usr/sbin/xmppip.py"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
	# Return
	#   0 if daemon has been started
	#   1 if daemon was already running
	#   2 if daemon could not be started
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
		|| return 1
	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
		$DAEMON_ARGS \
		|| return 2
	# Add code here, if necessary, that waits for the process to be ready
	# to handle requests from services started subsequently which depend
	# on this one.  As a last resort, sleep for some time.
}

#
# Function that stops the daemon/service
#
do_stop()
{
	# Return
	#   0 if daemon has been stopped
	#   1 if daemon was already stopped
	#   2 if daemon could not be stopped
	#   other if a failure occurred
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
	RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2
	# Wait for children to finish too if this is a daemon that forks
	# and if the daemon is only ever run from this initscript.
	# If the above conditions are not satisfied then add some other code
	# that waits for the process to drop all resources that could be
	# needed by services started subsequently.  A last resort is to
	# sleep for some time.
	start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
	[ "$?" = 2 ] && return 2
	# Many daemons don't delete their pidfiles when they exit.
	rm -f $PIDFILE
	return "$RETVAL"
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
	#
	# If the daemon can reload its configuration without
	# restarting (for example, when it is sent a SIGHUP),
	# then implement that here.
	#
	start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
	return 0
}

case "$1" in
  start)
	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
	do_start
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  stop)
	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
	do_stop
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  status)
       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
       ;;
  #reload|force-reload)
	#
	# If do_reload() is not implemented then leave this commented out
	# and leave 'force-reload' as an alias for 'restart'.
	#
	#log_daemon_msg "Reloading $DESC" "$NAME"
	#do_reload
	#log_end_msg $?
	#;;
  restart|force-reload)
	#
	# If the "reload" option is implemented then remove the
	# 'force-reload' alias
	#
	log_daemon_msg "Restarting $DESC" "$NAME"
	do_stop
	case "$?" in
	  0|1)
		do_start
		case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; # Old process is still running
			*) log_end_msg 1 ;; # Failed to start
		esac
		;;
	  *)
	  	# Failed to stop
		log_end_msg 1
		;;
	esac
	;;
  *)
	#echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
	exit 3
	;;
esac

:
root@debian-gateway:~# 
Но вывод DEBUG у скрипта сохраняется, вдобавок скрипт не выполняет свою функцию - бот в онлайне не появляется. Я в питоне и дебиане ноль, правда. В чем может быть проблема?
Заранее благодарю.
Скрипт при простом запуске из консоли работает.

 , ,

kostett
()

emerge ведёт себя странно

Форум — General
#!/bin/bash
echo "Start full upgrade?"
read answer
if [ "$answer" = "y" ] || [ "$answer" = "yes" ] || [ "$answer" = "д" ] || [ "$answer" = "да" ]
then
echo "Syncing portage tree..."
eix-sync
echo "\nUpgrading world..."
emerge -avuDN world --keep-going=y world && \
echo "\nRebuilding live..." && \
emerge -a @smart-live-rebuild && \
echo "\nRebuilding preserved..." && \
emerge -a @preserved-rebuild && \
echo "\nRevdep-rebuild..." && \
revdep-rebuild -- -aD && \
echo "\nUpgrading python..." && \
python-updater -- -aD && \
echo "\nCleaning perl..." && \
perl-cleaner --all -- -a
fi

При выполнении этапа с python-updater emerge вежливо спросил, продолжать ли действие (как и должно быть в случае с "-a"), но сам себе ответил на этот вопрос и действие продолжил. Чзх и как сделать так, чтобы он ждал моей р?

 , ,

Valdor
()

Понять причину «зависания» команды

Форум — General

Привет!

Ситуация такая - периодически приходится выполнять команды по ssh на нескольких хостах сразу, то есть я не захожу на каждый хост интерактивно, а использую конструкцию следующего вида (конечно, используется система управления, но пока это не важно, так что упрощаю):

ssh username@hostname command

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

ssh localhost 'grep test'

Можно прибить ssh, но как понять что нужно команде по информации на хосте? Найдя этот процесс в /proc можно посмотреть, что он «спит», при попытке посмотреть его файловые дескрипторы я вижу что-то вроде

$ ls -l
total 0
lr-x------ 1 username username 64 Aug 18 11:08 0 -> pipe:[10856516]
l-wx------ 1 username username 64 Aug 18 11:08 1 -> pipe:[10856517]
l-wx------ 1 username username 64 Aug 18 11:08 2 -> pipe:[10856518]

Иногда команда (прежде чем ожидать получения чего-то от пользователя) выводит что-то на экран, как получить эти данные мне тоже не понятно.

В общем жду рекомендаций о том, как понять что нужно процессу, желательно без установки дополнительного софта (средствами ОС). Заранее спасибо!

 , ,

alozovskoy
()

Правильное полное обновление Gentoo

Форум — General

Сначала выполняю eix-sync чтобы обновить дерево portage. Потом, естественно, emerge -avuDN world с изучением списка изменений. Так же потом имеет смысл выполнить emerge -a --depclean, затем emerge @preserved-rebuild. Иногда - emerge -a @module-rebuild. Ещё есть какие-то (какие?) команды для обновления python, perl и так далее. Что вообще нужно выполнять после обновления мира для поддержания системы в актуальном состоянии?

 , ,

Valdor
()

Разукрашка

Галерея — Скриншоты

После прочтения поста вспомнил свои прошлогодние затеи с раскрашиванием терминалов. Заново прочитал это и это, немного перепелил вывод скрипта под себя.

Скрипт автоматом генерирует цветовую схему для терминалов и GTK2/3, настроен под тёмную гамму. Я использую для этих наркоманств угловатую тему Mist, но вы можете перепилить под ту же более симпатичную и аккуратную oomox, сделать опцию для светлого оформления и терминалов (или, если хотите, я могу).

( Ну и как работает твоя развалюха? )

Скрипт

Mist-Colorized

PNG

 , , , trip,

zezic
()

Grey Gentoo

Галерея — Скриншоты

Жизнь в движении, и моё окружение тоже постепенно меняется. Изменения коснулись, в основном, внешнего вида. Цветовую гамму было решено составить из чёрного, оттенков серого и красного. За исключением tmux, появившегося на моём лаптопе лишь пару недель назад, софт прежний:

  • XMonad WM & Xmobar
  • urxvt & tmux
  • vim с airline
  • vifm
  • cmus

Шрифты: fixed, tewi (в xmobar).

Основной воркспейс, обновляемся, обоина (обесцв.), оригинал обоины.

Вот так.

 ,

mathcrosp
()

Новые приключения моего XMonad

Галерея — Скриншоты

Снова перекрасил рабочее окружение. Относительно предыдущего скриншота, за исключением цветов, отличия небольшие: увеличилось количество информации на панели, climm сменил finch в качестве xmpp-клиента, Chromium был заменён на Firefox с Vimperator и Blank Your Monitor + Easy Reading (за последний спасибо zh_v68). Курсор прячет unclutter.
На скриншотах:

  • xmonad + xmobar
  • urxvt, tmux
  • vim, vifm, ncmpcpp

Ш: Pragmata, Tewi
Обои утащил с девиантарта.

Ещё скриншоты: [1], [2], [3]
Да, конфиги и скрипты для панели тут.

 ,

mathcrosp
()

SystemTap 2.5

Новости — Open Source
Группа Open Source

SystemTap — средство, которое позволяет собирать и анализировать информацию о работающей Linux-системе, производить сбор статистики о работе приложений, профилирование и контроль системных вызовов. Управление производится через интерфейс командной строки и специальный Си-подобный язык сценариев. В разработке проекта SystemTap участвуют такие компании как Red Hat, IBM, Oracle Corporation, Hitachi.

Неполный список изменений:

  • Изменения во фронтэнде (утилите stap):
    • Поддержка работы на системах с UEFI SecureBoot с поддержанием ключей верификации силами размещённого в сети доверительного SystemTap-сервера;
    • Возможность выполнения контрольных проверок во время загрузки, благодаря подстановке проверочных модулей на раннем этапе загрузки (поддерживаются системы с dracut). Для выполнения проверок во время загрузки представлена команда onboot
    • При выполнении DWARF-проверок обеспечена возможность использования '.callee|s|' для более точного исследования функций. Например, если конструкция process(«myproc»).function(«foo»).callee(«bar») сработает только при вызове функции bar() из foo(), то process(«myproc»).function(«foo»).callees сработает для всех вызовов;
    • Новые опции для инспектирования содержимого установленных библиотек: «stap --dump-functions» выведет весь список функций и их аргументы, «stap --dump-probe-aliases» покажет все псевдонимы контрольных проверок для библиотеки;
    • Увеличена скорость и точность выполнения контрольных проверок выражений (process.statement) для развёрнутых (inline) функций;
    • Улучшены эвристические алгоритмы, используемые для поиска завершения пролога функции;
    • В случае недоступности debuginfo проверка функций в процессах теперь откатывается на использование символьных таблиц;
    • Увеличена точность и лаконичность сообщений об ошибках несоответствия типов;
    • При отсутствии указанных меток обеспечен вывод подсказок с уточнением наиболее вероятного варианта, например, при указании process(«stap»).mark(«benchmart») предлагается использовать метку 'benchmark';
  • Улучшения в языке сценариев:
    • Поддержка условного выражения «%( guru_mode == 0 %)» или «%( guru_mode == 1 %)» для организации двойного использования скриптов;
    • Во встроенных функциях на Си можно использовать STAP_RETURN(value) вместо перехода «goto out» и назначения STAP_RETVALUE;
    • Функции |s|println() теперь могут быть вызваны без аргументов, что приведёт к выводу символа новой строки;
  • Добавлена поддержка обратной трассировки (backtracing) через задействование специального модуля;
  • Добавлен новый псевдоним проверки «oneshot» для быстрого выполнения фрагмента скрипта и выхода.

>>> Подробности

 , ,

zorg
()

Релиз Pexpect 3.2

Новости — Open Source
Группа Open Source

Pexpect — модуль Python для запуска и контроля порождённых приложений.

Pexpect может быть использован для автоматизации интерактивных приложений, таких как ssh, ftp, passwd и telnet. В отличии от других Expect-подобных модулей, Pexpect не требует TCL и для его компиляции не требуются расширения C. Для его работы достаточно стандартного Python и модуля pty. Интерфейс Pexpect был разработан чтобы быть лёгким в использовании.

Список изменений в версии 3.2

  • Исправлена обработка исключений в select.select() в Python 2.
  • Удалена поддержка TIOCSWINSZ на очень старых системах.
  • Исправлена ошибка и улучшена документации в pxssh.

>>> Подробности

 

Cloud_Strife2020
()

Бэкап LVM c помощью Bacula

Форум — Admin

Добрый

LVM разделы являются дисками виртуальных машин. Бэкап собственно заключался в нескольких строчках кода

#create snapshot
lvcreate -L${LVM_TEMP_SIZE} -s -n backup ${LVM_GROUP}/${LVM}

#create compressed image dd
dd if=${LVM_GROUP}/backup bs=8096 | gzip -9cf > ${NAME_SNAP}

#delete snapshot
lvremove ${LVM_GROUP}/backup --force
Задача делать тоже самое c использованием bacula. Определяю Задание (Job) и Набор файлов (FileSet). В задании до его запуска и после указываю скрипты в которых создается, а после удаляется snapshot LVM.
~# nano /etc/bacula/bacula-dir.conf
....
Job {
    Name = backup
    Type = Backup
    Client = Client
    FileSet = FileSet
    Schedule = "WeeklyCycle"
    Messages = Standard
    Pool = motherpool
    Write Bootstrap = "/var/spool/bacula/%n.bsr"
    Priority = 1

    Client Run Before Job = /patch/to/lvm_start.sh
    Client Run After Job = /patch/to/lvm_stop.sh
}

FileSet {
    Name = FileSet
    Include {
        Options {
           signature = MD5
           compression= GZIP
           recurse = yes
        }
     File = /dev/mapper/vg0-backup
    }
}

~# cat /patch/to/lvm_start.sh
#!/bin/bash

lvcreate -L 20G -s -n backup /dev/vg0/kvm_disk
~# cat /patch/to/lvm_stop.sh
#!/bin/bash

lvremove /dev/vg0/backup --force

Запускаю... Все без ошибок! Но файл 0 размера в bacula.

vg0-backup	 lrwxrwxrwx  0  0  05-Mar-12 21:31:29  7 bytes

petav
()

BAR 0.18

Новости — Open Source
Группа Open Source

BAR - это программа для архивирования бэкапов. Разработчик создал эту программу после того как не смог найти простой в использовании софт для архивирования бэкапов (зашифрованных и сжатых) которые можно сохранить на CD, DVD или BD. Программа активно развивается. Используется лицензия GPLv2.

Особенности программы:

  • Умеет создавать, просматривать, тестировать, сравнивать и распаковывать архивы файлов и образы дисков.
  • Может разбивать архивы на части, можно выбрать размер архива, при этом каждую часть можно открыть и просмотреть независимо.
  • Сжатие данных с помощью zlib, bzip2, lzma или алгоритма xdelta3.
  • Шифрование архивов с использованием алгоритма gcrypt (AES , Twofish и т.д.)
  • Асимметричное шифрование с помощью RSA.
  • Быстрый доступ к записям в архивах : можно найти и извлечь отдельные файлы без предварительной распаковки / дешифрования всего архива.
  • Хранение архивов непосредственно на внешний сервер через ftp, scp или sftp.
  • Умеет хранить архивы на CD/DVD/BD.
  • Встроенный планировщик, для создания резервного копирования ежедневно или еженедельно.
  • Хороший графический интерфейс.

Список изменений 0.18:

  • Добавлена поддержка многопоточного(многоядерного) сжатия / шифрования.
  • Увеличение скорости создания архивов.
  • Добавлена функция автоматического удаления дубликатов записей индекса, когда сервер запущен.
  • Добавлена поддержка протокола WebDAV
  • Добавлен uuid.
  • Обновление gpg-error 1.10, gcrypt 1.5.0, gnutls 3.1.18, libcdio 0.92, pcre 8.34.
  • Добавлена поддержка листинга содержимого удаленного каталога.

Список изменений

Скриншоты: 1, 2, 3, 4, 5, 6.

>>> Сайт

 ,

fallout4all
()

gpgpwd 0.3

Новости — Open Source
Группа Open Source

gpgpwd — это терминальный менеджер паролей. Он хранит список паролей в зашифрованном файле с помощью GnuPG, и позволяет легко извлекать, изменять и добавлять в этот файл новые пароли по мере необходимости. Также программа умеет генерировать случайные пароли.

gpgpwd может использовать Git, чтобы синхронизировать свои пароли между различными машинами.

Изменения версии 0.3:

  • Добавлен параметр --all для поиска всех возможных совпадений.
  • Добавлен вывод информации на экран при вводе неправильной команды.
  • Убраны некоторые предупреждения при шифровании с помощью gpg, когда gpg является символической ссылкой на gpg2
  • Добавлена функция отключения сжатия gpg.

Список изменений

>>> Сайт

 ,

fallout4all
()