LINUX.ORG.RU

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

Systemd и hostname основанный на MAC

Форум — General

Здравствуйте!

Занимаюсь сборкой ОС на базе Debian для бездисковых рабочих станций и загрузкой по сети без корня по NFS.

Есть идея назначать уникальное имя для хостов основанное на mac-адресе. Зачем? Опять же в планах управлять этими хостами через puppet.

Проблема возникает с systemd. В интернете нашел пример:

[Unit]
Description=Start Debian with a different hostname each boot
Wants=network-pre.target
Before=network-pre.target
[Service]
ExecStart=/usr/bin/newhostname
Type=oneshot
[Install]
WantedBy=multi-user.target
#!/usr/bin/env bash
# Description: Generate and set a random hostname on Linux
# Requires: sed, awk
# Usage: set-random-hostname
__set_random_hostname() {
  local new_hostname=$(head -n1 < <(fold -w8 < <(tr -cd 'a-z0-9' < /dev/urandom)))
  # set new hostname
  hostnamectl set-hostname "$new_hostname"
  # set new hostname in /etc/hosts
  sed -i "2 s/^.*$/127.0.1.1       $new_hostname/g" /etc/hosts
}
__set_random_hostname

Все работает отлично и каждый раз у хоста новое динамическое имя. Попытался вставить

cat /sys/class/net/*/address | sed ':a;N;$!ba;s/\(\n\|:\)//g' 

не работает. Подставляет, только localhost.

Запускаю с выводом в файл:

cat /sys/class/net/*/address | sed ':a;N;$!ba;s/\(\n\|:\)//g' > /tmp/firstboot
  ip a >> /tmp/firstboot

В /tmp/firstboot только localhost. Что я только не делал, менял target в Юните результат один.

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

 

mcshel
()

Увидел свет LanguageTool 4.5 и 4.5.1!

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

LanguageTool — это свободная система для проверки грамматики, стиля, пунктуации и орфографии с открытым исходным кодом. Основное ядро LanguageTool можно использовать как расширение LibreOffice/Apache OpenOffice и как Java-приложение. На сайте системы http://www.languagetool.org/ru работает online-форма проверки текста. Для мобильных устройств на Android доступно отдельное приложение LanguageTool proofreader.

( читать дальше... )

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

 , , , ,

Yakov
()

Сервер видеонаблюдения Bluecherry полностью открыт под GPL 2.0

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

Bluecherry — комплекс DVR (Digital Video Recorder) для видеонаблюдения, состоящий из сервера, работающего на GNU/Linux, и клиента — приложения, работающего на GNU/Linux, MacOS и Windows, а также через сторонние мобильные приложения для Android и iOS.

( читать дальше... )

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

 , ,

anonymous
()

Lutris 0.5.0

Новости — Игры
Lutris 0.5.0
Группа Игры

Состоялся значительный релиз Lutris — игровой платформы для Linux, которая позволяет устанавливать и запускать игры без лишних хлопот, в том числе из GOG, Steam, Battle.net, Origin, Uplay с помощью специально подготовленных сценариев.

( читать дальше... )

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

 , , , ,

Turbid
()

покритикуйте bash крипт для бэкапа

Форум — Development

backup:/s0/backup# cat backup.sh
#!/bin/bash


TIMESTAMP=`date +%F_%R_%s | sed s/:/=/`
ARCH="-j"  					# bz2 or gz
VERB=""

help_usage ()
{
echo -e "Usage: $0 [jzblixvh]  
	-j - Use bzip2 for archive backup [default] 
	-z - Use gzip for archive backup 
	-t <TYPE_OF_BACKUP> - Define type of backup inc - incremental or full - for full backup
	-f <CONFIG_FILE> - Define file which contains configuration
	-b <BACKUP NAME> - name backup (use \"default\" for $BACKUP_NAME)
	-v - verbose [non default]
	-h - print this help"
}

if [[ $# -eq 0 ]]
then
	help_usage
	exit 0
fi

while getopts ":jzb:vhd:x:l:f:t:" Option
do
  case $Option in
	j )
	     ARCH="-j"
	     ;;
	z )
	     ARCH="-z"
	     ;;
	d )
	     INSTALL_DIR="${OPTARG}"
	     ;;
	t )
	     TYPE_OF_BACKUP="${OPTARG}"
	     if [[ ${TYPE_OF_BACKUP} = "inc" || ${TYPE_OF_BACKUP} = "full" ]]
	     then :
	     else
	     	echo "Use -t only for \"full\" or \"inc\" type of backup"
		exit 0
	     fi
	     ;;
	b )
		 if [[ $OPTARG != "default" ]]
		 then
	     	BACKUP_NAME="${OPTARG}" 
		 fi
	     ;;
	l )
	     BACKUP_LIST="${OPTARG}"
	     ;;
	x )
	     EXCLUDE_LIST="${OPTARG}"
	     ;;
	f )
		 CONF_FILE="${OPTARG}"
		 if [[ -e "${CONF_FILE}" ]]
		 then 	
		 	. "${CONF_FILE}"	
		 else
		 	echo "Can't find ${CONF_FILE}. Used valid"
		 fi
		 ;;
	v )
	     VERB="-v"
	     ;;
	h )
	 	 help_usage
	     exit 0
	     ;;
	* )
		 help_usage
		 exit 0
		;;
  esac
done
shift $(($OPTIND - 1))

if [[ ! -e ${BACKUP_LIST} ]]
then
	echo "Edit conf file to to define list of backup files"
	exit 0;
fi

if [[ ! -e ${EXCLUDE_LIST} ]]
then
	echo "Edit conf file to to define list of exclude files"
	exit 0;
fi

remote_hostname=$(ssh $SSH_CONN_OPT $REMOTE_USER@$REMOTE_HOST hostname)
if [[ "$TYPE_OF_BACKUP" == "inc" ]]
then
	DATE_TIME=$(ls -1 -t ${LOCAL_DIR}/backup* | head -n 1 | grep -E -o "[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}=[0-9]{2}")
	INC_TIME=$(echo ${DATE_TIME} | grep -E -o "[0-9]{4}-[0-9]{2}-[0-9]{2}")
	INC_TIME="${INC_TIME} $(echo ${DATE_TIME} | grep -E -o '[0-9]{2}=[0-9]{2}' | sed s/\=/:/)"
	BACKUP_NAME="backup_${remote_hostname}_${TYPE_OF_BACKUP}_${TIMESTAMP}"
;
	ADV_OPT="--newer-mtime '${INC_TIME}'"
else
	BACKUP_NAME="backup_${remote_hostname}_${TYPE_OF_BACKUP}_${TIMESTAMP}"
;
fi

if [[ "${ARCH}" == "-j" ]]
then
	BACKUP_NAME="${BACKUP_NAME}.tar.bz2"
else
	BACKUP_NAME="${BACKUP_NAME}.tar.gz"
fi

COMM="tar --create --ignore-failed-read ${ARCH} \
	    ${VERB} --file="${REMOTE_DIR}/${BACKUP_NAME}" `cat ${BACKUP_LIST}` \
	    $(for entity in `cat ${EXCLUDE_LIST}`; do echo '--exclude' ${entity}; done) \
	    --exclude ${REMOTE_DIR} ${ADV_OPT}" 

echo "Start make ${TYPE_OF_BACKUP} backup to ${BACKUP_NAME}"

echo "use ${ARCH} to archive"
ssh ${SSH_CONN_OPT} ${REMOTE_USER}@${REMOTE_HOST} ${COMM}
echo "End backup"

echo "Start copy backup to local machine"
scp ${SCP_CONN_OPT} ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/${BACKUP_NAME} ${LOCAL_DIR}
echo "End copy"

echo "Begin delete remote copy"
COMM="rm -f ${REMOTE_DIR}/${BACKUP_NAME}"
ssh ${SSH_CONN_OPT} ${REMOTE_USER}@${REMOTE_HOST} ${COMM}
echo "End delete"

echo "Delete obsolete"
find $LOCAL_DIR -mtime "+$EXPIRE_TIME" -name "backup.*.tar.*" -exec rm -f {} \;
echo "End delete"

backup:/s0/backup# cat serv/serv.conf 
#
# Config file for backup serv server
#

REMOTE_HOST="192.168.0.1"
REMOTE_USER="root"
BACKUP_LIST="/s0/backup/serv/list.backup"
EXCLUDE_LIST="/s0/backup/serv/list.exclude"
REMOTE_DIR="/bk"
LOCAL_DIR="/s0/backup/serv"
EXPIRE_TIME="7" 	#in days
TYPE_OF_BACKUP="full"

SSH_CONN_OPT="-p 22"
SCP_CONN_OPT="-P 22"


tugrik
()

GrafX2 2.6 — свободный 256-цветный редактор пиксельной графики

Новости — Мультимедиа
GrafX2 2.6 — свободный 256-цветный редактор пиксельной графики
Группа Мультимедиа

GrafX2 — растровый графический редактор для создания и редактирования пиксельных изображений в стиле «pixel art» (с глубиной цвета до 8-бит). Код программы написан на языке C с использованием тулкита SDL (благодаря чему легко портируется на большинство известных платформ), а дополнения для программы можно писать в виде Lua-скриптов.

11 января 2019 года, спустя 8 месяцев с момента предыдущего релиза, Пулко Мэнди (Pulko Mandy, aka ‘pulkomandy’), главный разработчик проекта, объявил о релизе GrafX2 2.6 в своём аккаунте в Twitter:

GrafX2 2.6 just released (just in time for inclusion in Debian), with support for copy/paste, drawing for various 8 bit systems with constraints, and a lot of improvements! Thanks @tbernard1979 and all contributors! Also the 23rd birthday of the first public release today! 🎁

( читать дальше... )

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

 , , , ,

atsym
()

Зачем нужен Puppet/Ansible, если есть git по крону и bash?

Форум — Admin

По мотивам моего скриншота, мне посоветовали перейти на автоматизацию, в чём я согласен, ибо 95% тачек однотипные, заменяют друг друга создавая собой по-сути кластер. Надавали советов перейти на Puppet, но одного я не пойму — зачем делают такой софт, который заменяется однострочником на bash?

https://ru.wikipedia.org/wiki/Puppet

Узлы сети, управляемые с помощью Puppet, периодически опрашивают сервер, получают и применяют внесённые администратором изменения в конфигурацию.

Всё! Этого достаточно! Вся программа в одном русским языком предложении.

Теперь мы просто на каждую машину в crontab -e подсунем * * * * * cd / && $(which git) clone ssh://server/config_$(hostname).git && ./reconfigure.sh и всё!

Чего же ради создавать все эти > Конфигурация описывается на специальном декларативном предметно-ориентированном языке.

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

Может я что-то недоПОНИмаю...

 ,

Spoofing
()

Чем плохи бездисковые кластеры?

Форум — Admin

Прорвало что-то, но в общем, вытекая из предыдущего вопроса про удалённое конфигурирование, возник вопрос, почему бы тогда и вовсе не создавать бездисковые ноды.

Архитектура такая. Пусть вся сеть состоит из одного единственного ПК. На ПК установлена система с bind + dhcp, вторая сетевая карточка с выходом на свитч, таким образом подключаясь к свичу ноды становятся частью сети. Это понятно.

Дальше мы хотим расширить сеть, создать кластер, подключить ноды. Собираем новый ПК, подключаем по Ethernet к свичу и всё. Больше его не трогаем, ибо:

* Пакетом Wake-On-Lan включаем ПК удалённо.

* При включении, когда нету дисков, на материнских платах задействуется загрузка по сети, таким образом с настроенным DHCP + TFTP + NFS мы загружаем систему по сети со всей необходимой конфигурацией и софтом.

* Обновляем конфигурацию софта по мере надобности, на выходе имеем неограниченное количество нод под любые задачи, упираясь только в бюджет мамкиного админа локалхоста, уж простите.

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

 ,

Spoofing
()

Какие процессы удобно отдавать на аутсорсинг?

Форум — Admin

Добрый день, уютный ЛОРчик.

Если ошибся разделом, то переместите в Толксы, что ли.

А вопрос такой: сисадмины, вы сталкивались с аутсорсингом тех или иных процессов в работе? Ну, например, обслуживание сети в офисе, или, скажем, замена картриджей в принтерах. Какие процессы у вас, при вас или из-за вас отдавали в субподряд? Какие были результаты, была какая-то выгода или оказалось бессмысленным? Какие были предпосылки?

 , , , ,

djambeyshik
()

Нужна платформа для блога без базы данных

Форум — Admin

Чтобы умела:

1. Работать без базы данных. Например просто хранит каждый пост в markdown-файлах в директориях по дате: db/2018/11/11

2. Посты писать чезер wysiwyg через вебморду

Бывает такое?

 

buggycoder
()

Настройка геокластера HA с pacemaker и stonith

Форум — Admin

Доброго дня суток!
Имеется следующая ситуация: необходимо с помощью pacemaker/stonith (RedHat7.5) построить High Availability геокластер, а именно имеются две виртуальные машины:
node1 находится в Vcenter1 в городе city1
node2 находится в Vcenter2 в городе city2
на обоих нодах крутится БД, в режиме Master/Slave соответственно, т.е. весьма критично не допустить Split-brain'a.

При падении node1 pacemaker поднимает node2 в режим Master и присваивает ему нужный виртуальный IP, при этом Stonith должен потушить node1 (чтобы если вдруг он сам поднимется\включится\станет доступным не произошел Split-brain).

Stonith делает это так - с node2 с помощью политики fence_vmware_soap подключается к Vcenter1 и тушит необходимую vm'ку (в нашем случае node1).

Все вроде бы логично. Но вот ЧТО ЕСЛИ теряется связь\канал до Vcenter1 и Stonith соответственно не может подать команду на тушение node1? отработает ли в этом случае pacemaker?(а именно поменяет роль с Slave на Master).
Подскажите как выкрутиться в этом случае?
Возможно есть какие-то обкатанные варианты? Заранее благодарю.

 ,

Sappper
()

Релиз Revolution IRC 0.4.1 — свободный современный IRC-клиент для Android

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

Revolution IRC — современный IRC-клиент для платформы Android в стиле Material design.

29 августа 2018 года состоялся релиз версии 0.4.0 и в тот же день состоялся релиз версии 0.4.1 с иправлением критической ошибки.

( Основные изменения... )

На текущий момент, это единственный активно развиваемый проект среди самодостаточных IRC-клиентов в репозитории F-Droid.

>>> Скачать исходный код (GitHub)

>>> Установить APK: F-Droid | Google Play

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

 , , ,

atsym
()

Вышел Tusky 3.0 — свободный Mastodon-клиент для Android

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

Tusky — легковесный Mastodon-клиент для платформы Android, который поддерживает все возможности сети Mastodon, включая фото, видео, списки, «custom emoji» а также имеет интерфейс, разработанный в соответствии с Material design.

Mastodon — федеративная социальная сеть для микроблогинга, написанная на языке Ruby и использующая стандартизированный W3C протокол ActivityPub.

( Основные изменения... )

>>> Скачать исходный код релиза и APK-пакет (GitHub)

>>> Установить APK: F-Droid | Google Play | Amazon Appstore

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

 , ,

atsym
()

Релиз персонального менеджера для накопления информации MyTetra v.1.43

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

Опубликован новый релиз кроссплатформенного PIM-менеджера MyTetra v.1.43. Это багфикс-релиз, выпущенный спустя два года после основного релиза. Список изменений состоит из 24 пунктов, среди которых не только исправление выявленных при эксплуатации проблем, но и добавление нового функционала.

В данном релизе сделано много мелких правок для встроенного WYSIWYG редактора, улучшено редактирование ссылок и доработано поведение редактора на граничных местах текста - в начале и конце области редакторования. Исправлена работа с различными нестандартными именами прикрепляемых файлов (dot-файлы, файлы без расширений и т.п.), исправлено взаимодействие программы с различными оконными средами (DE) в плане правильного восстановления геометрии окна и назначении кнопок по-умолчанию.

( читать дальше... )

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

 , , ,

Xintrea
()

Утилита для RAID адаптера

Форум — Admin

Есть адаптер: LSI MR9240-8i. Стоит 4 массива, для Windows есть утилита для просмотра из-под операционной системы состояния массивов, есть ли под Debian что то подобное?

 

iliaxxx
()

2 одинаковых подсети

Форум — Admin

Добрый день.

есть два интерфейса tun0 и tun1

tun0 - 192.168.0.0/24
tun1 - 192.168.0.0/24

в обеих подсетях есть сервер на ip 192.168.0.254/24, по понятным причинам подключение к этим серверам становится проблемой, вопрос, как реализовать нечто подобное:

172.17.1.254 (fake ip) -> tun0 -> 192.168.0.254
172.17.2.254 (fake ip) -> tun1 -> 192.168.0.254

попробовал вот так:

iptables -t nat -A PREROUTING -s 172.17.1.254 -p tcp -j DNAT --to-destination 192.168.0.254

но что-то не завелось...

ЗЫ: обратная связь не обязательна, сервер не должен видеть меня. ЗЫЫ: не силен в iptables

 ,

qshiroe
()

Мониторинг puppet master'а

Форум — Admin

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

Кто-нибудь пробовал вытащить из puppet master'а ( или puppet dashboard'а ) информацию для отправки во внешню систему мониторинга?

Например, список агентов, время с момента последнего запроса каталога определённым агентом, время компиляции манифеста для агента, время применения манифеста агентом.

P.S. Пока читаю код модулей для nagios, но нужного пока не нашёл.

 ,

router
()

jabber и IMAP

Форум — Admin

поставил, значит, себе jabber mail component, настроил его связку с ejabberd.

Удивительное началось при попытке подружить его с gmail. Подозрения на строку https://github.com/dax/jmc/blob/master/src/jmc/model/account.py:360

typ, data = self.connection.search(None, 'RECENT')
Попробовал сделать то же самое в ipython — и правда, гугл не отдает последнюю почту при такой команде. Попробовал то же самое на институтской (там zimbra) — исправно получает список последней полученной почты. Исправил RECENT на UNSEEN — гугл заработал, но теперь транспорт каждые пять минут бодро шлет уведомления.

Короче говоря, запутался я с IMAP и его гугловой реализацией.

 , jmc

demidrol
()

tg4xmpp — транспорт Jabber в Telegram

Новости — Интернет
Группа Интернет

Наша команда рада представить работающий прототип транспорта из сети XMPP в сеть Telegram. В настоящий момент он находится в стадии пре-альфа, однако, он уже способен принимать и отправлять сообщения из/в сеть Telegram.

( читать дальше... )

>>> Исходный код

 , ,

annerleen
()

Не интерактивный ssh в cron или zabbix

Форум — Admin

Потратил сегодня часа два на проблему, причем беглый поиск выдает, что проблема таки есть, но с решениями как-то не очень. В общем, если нужно запустить ssh-клиента из как-то хитро вызываемого не интерактивного скрипта, то можно столкнуться со следующим поведением: команда завершается успешно, показывает код выхода «0», но при этом не делает ничего полезного. Я столкнулся при написании хитрого User Parameter для Zabbix, но, говорят, в cron та же история. Если посмотреть отладочный вывод ssh, то там будет фигурировать что-то вроде такого:

debug2: channel 0: read<=0 rfd 4 len 0

debug2: channel 0: read failed
И последующее закрытие соединения. Происходит это, когда у ssh нет STDIN (то-ли перенаправлен из /dev/null, то-ли вообще закрыт), даже если читать оттуда ничего не предполагается.

Решение на поверхности: если команда не использует входящий поток, перенаправить его из /dev/zero:

ssh <host> "команда" </dev/zero

 

shamus24
()