gladilov.org.ru gladilov.org.ua

54 заметки с тегом

Linux

Позднее Ctrl + ↑

Заставляем работать старую версию Skype для Linux





Всё, о чем так долго говорили большевики, свершилось! Линукс под скайп всьо!!! Тьфу ты, то есть скайп под Линук всьо!.. Но есть довольно грязный хак: поменять строку с версией в самом бинарнике отжившего скайпа.

Показать

Если Скайп установлен из DEB-пакета для Debian:

echo -n 8 | dd of=/usr/bin/skype bs=1 seek=23370360 conv=notrunc

Хак любой весии:

sed -i 's/4\.3\.0\.37/8\.3\.0\.37/' /usr/bin/skype

В генте путь поменять на /opt/bin/skype, или более универсальный способ:

sed -i 's/4\.3\.0\.37/8\.3\.0\.37/' $(which skype)

Отседова

Простейший portknock’ер

Простейший portknock’ер, работающий по icmp.

Показать

iptables -A INPUT -p icmp --icmp-type 8 -m length --length 153 -m recent --name portknock --rsource --set -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -m length --length 154 -m recent --name portknock --rsource --update --hitcount 1 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -m length --length 155 -m recent --name portknock --rsource --update --hitcount 2 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m recent --seconds 10 --name portknock --rsource --rcheck --hitcount 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP


Для открытия порта SSH необходимо пустить три определённых пинга на адрес целевой системы:

ping -s 125 -c 1 [адрес]
ping -s 126 -c 1 [адрес]
ping -s 127 -c 1 [адрес]


Пользователям системы Microsoft ® Шindoшs ™ придётся использовать такой синтаксис:

ping -l 125 -n 1 [адрес]
ping -l 126 -n 1 [адрес]
ping -l 127 -n 1 [адрес]

Количество Linux и Windows систем в локальной сети

Количество Linux- и Windows-хостов в сети можно с помощью следующих команд:

$ sudo nmap -F -O 192.168.1.1-255 | grep "Running: " > /tmp/os; \
echo "$(cat /tmp/os | grep Linux | wc -l) Linux device(s)"; \
echo "$(cat /tmp/os | grep Windows | wc -l) Window(s) devices"

Вместо 192.168.1.1-255 нужно подставить параметры своей сети. Для выполнения требуется установленный в системе пакет nmap и пользователь должен иметь возможность получать привилегии рута.

P. S. В источнике приведён однострочник, но я разбил строку на три для удобства и читаемости.

Получение внешнего IP скриптом на BASH’е

Привожу BASH-скрипт получения своего внешнего IP
(использует сервис http://checkip.dyndns.org/dyndns.checkip.html).

wget -q http://checkip.dyndns.org/dyndns.checkip.html -O - | sed -r 's/[\<][\/]?[a-zA-Z0-9\=\"\-\#\.\& ]+[\/]?[\>]//g' $1 | cut -d':' -f2 | sed 's/^[ ]*//' -

Показать

Опишу работу скрипта.

С помощью кода

wget -q http://checkip.dyndns.org/dyndns.checkip.html -O -

скрипт получает строку вида

<html><head><title>Current IP Check</title></head><body<Current IP Address: 217.69.139.200</body></html>

на свой вывод, о чём указывает ключ "-O -". Полученный текст с помощью кода

sed -r 's/[\<][\/]?[a-zA-Z0-9\=\"\-\#\.\& ]+[\/]?[\>]//g' $1

очищается от HTML-тегов (значение свойства $1 изменяется при каждом успешном обнаружении заключенного в знаки / .. / шаблона. Шаблон описывает замену любого текста, обрамлённого знаками < (или </) ... > (или />) и содержащего (или нет ) символы a-z, A-Z, цифры от 0 до 9, знаки = (равно), " (двойная кавычка), (минус), # (диез), . (точка), & (амперсанд) и пробел в любом порядке, влючая неограниченное число повторов).

Затем из очищенного таким образом текста вида

Current IP CheckCurrent IP Address: 217.69.139.200

с помощью оператора

cut -d':' -f2

вычленяется вторая часть строки после деления её по символу : (двоеточие). Получаем

217.69.139.200

(с пробелом в начале строки). Его отсекаем командой

sed 's/^[ ]*//' -

убирающей пробел именно в начале строки. Результат

217.69.139.200

26 лет ядру Linux

25 августа в 1991 году 21-летний студент Линус Торвальдс объявил в телеконференции comp.os.minix о создании после пяти месяцев разработки рабочего прототипа новой операционной системы, для которой было отмечено завершение портировния bash 1.08 и gcc 1.40. Первый публичный выпуск был представлен 17 сентября. Ядро 0.0.1 имело размер 62 Кб в сжатом виде и содержало около 10 тысяч строк исходного кода (современное ядро насчитывает более 24 млн строк кода)

Показать

Ядро создавалось под впечатлением от операционной системы MINIX, не устраивающей Линуса своей ограниченной лицензией. Впоследствии, когда Linux стал известным проектом, недоброжелатели пытались обвинить Линуса в прямом копировании кода некоторых подсистем MINIX. Нападение отразил Эндрю Таненбаум, автор MINIX, который поручил одному из студентов провести детальное сравнение кода Minix и первых публичных версий Linux. Результаты исследования показали наличие только четырёх несущественных совпадений блоков кода, обусловленных требованиями POSIX и ANSI C.

Первоначально Линус решил назвать ядро Freax, от слов «free», «freak» и X (Unix). Но имя «Linux» ядро получило с лёгкой руки Ари Лемке (Ari Lemmke), который по просьбе Линуса разместил ядро на FTP-сервере университета, назвав директорию с архивом не «freax», как просил Торвальдс, а «linux». Примечательно, что некий предприимчивый делец Вильям Делло Крок (William Della Croce) сумел зарегистрировать торговую марку Linux и хотел со временем собирать отчисления, но позднее передумал и передал все права на торговую марку Линусу. Официальный талисман Linux-ядра, пингвин Tux, был выбран в результате соревнования, состоявшегося в 1996 году. Имя Tux расшифровывается как Torvalds UniX.

P. S. — сегодня ещё и день рождения царя Ивана Васильевича IV Грозного.

Проекту Debian исполнилось 24 года

Проект Debian празднует своё двадцатичетырёхлетие. Дистрибутив был впервые анонсирован студентом Университета Пердью Яном Мёрдоком (Ian Murdock) 16 августа 1993 года в списке рассылки comp.os.linux.development. Этот день и считается днем рождения операционной системы Debian.

Показать

Первичной задачей проекта была разработка дистрибутива, развиваемого в соответствии с духом полной открытости, свойственной Linux и GNU, а также стремление к техническому совершенству и надёжности.

За время существования Debian было выпущено 14 релизов, обеспечена официальная поддержка 30 аппаратных архитектур, сформирован репозиторий из более чем 50 тысяч пакетов. В проект вовлечено более 1000 разработчиков, в сервисе alioth.debian.org зарегистрировано около 30 тысяч аккаунтов. На технологиях Debian построено более 300 производных дистрибутивов, из которых около 120 активно развиваются.

С днём рождения, лучший и надёжнейший дистрибутив! Дистрибутивище!!!

P.S. Дебиан уже 24 года торт!

P.P.S. Жизненный путь дебиана и его семья:
https://upload.wikimedia.org/wikipedia/commons/6/69/DebianFamilyTree1210.svg?uselang=ru

Опять про PS1

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

а у рута будет лиловенькая:

Показать

И вообще, на всякий случай привожу краткие выдержки конфигурационных файлов моего BASH’a:
Мой ~/.bashrc

PS1='\[\e]0;`if [[ $? = 0 ]]; then echo "\[\033[1;34m\]"; else echo "\[\033[1;31m\]"; fi`\t \[\033[1;32m\]\u\[\033[0;37m\]@\[\033[1;32m\]\H\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

alias sus='sudo -s'

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

export PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs

Мой ~/.profile

if [ -n "$BASH_VERSION" ]; then
    if [ -f "$HOME/.bashrc" ]; then
        "$HOME/.bashrc"
    fi
fi

if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

export LANG=ru_RU.UTF-8
export LANGUAGE=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8
export PAGER=/usr/bin/most

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

/root/.bashrc

PS1='${debian_chroot:+($debian_chroot)}`if [[ $? = 0 ]]; then echo "\[\033[1;34m\]"; else echo "\[\033[1;31m\]"; fi`\t \[\e[0;95m\]\u\[\033[0;37m\]@\[\033[1;32m\]\H\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

export LANG=ru_RU.UTF8
export LC_ALL=ru_RU.UTF8
export PAGER=/usr/bin/most

if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi

/root/.profile

if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi

mesg n || true

Вишенкой на торте — механика процесса инициализации оболочки
(из Вики, чтобы представлять, как оно внутри устроено и заводится).

Когда Bash вызывается как интерактивная оболочка входа в систему, первым делом он читает и вызывает команды из файла /etc/profile, если этот файл существует. После чтения этого файла, он смотрит следующие файлы в следующем порядке: ~/.bash_profile, ~/.bash_login и ~/.profile, читает и вызывает команды из первого, который существует и доступен для чтения. При выходе bash читает и выполняет команды из файла ~/.bash_logout.

Когда запускается интерактивная оболочка, но не для входа в систему, bash читает и исполняет команды из файлов /etc/bash.bashrc и ~/.bashrc, если они существуют. Это может быть отменено опцией -norc. Опция -rcfile file заставит Bash использовать команды из файла file вместо /etc/bash.bashrc и ~/.bashrc.

2017   BASH   Linux   сисадминство   софт

Переменная PS1 и её сёстры

Всегда хотел узнать, почему у переменной окружения $PS1 (prompt string) в конце цифра 1.

Оказывается — таких переменных аж четыре штуки ($PS1, $PS2, $PS3, $PS4), и все они отображают приглашения ко вводу в различных ситуациях.

Показать

Далее речь идёт о системной оболочке bash.

В моих системах $PSx выглядят так:

$PS1 — приглашение командной строки, используется в оболочке для отображения запроса ввода и отображается тогда, когда консоль готова считать команду.
Значение по умолчанию:

"\u@\h:\w\$ "

или

"\s-\v\$ "

(расшифровку значений спецсимволов bash см. внизу заметки).
$PS2 — вторичное приглашение командной строки, отображается, когда консоль нуждается в дополнительном вводе для завершения команды, которую уже начала считывать.
Значение по умолчанию:

"> "

Очень длинную команду можно разбить с помощью символа ’\’ в конце строки, при этом приглашение изменится на $PS2, ожидая ввода продолжения команды.

$PS3 — третичное приглашение, выводится тогда, когда оператор select ожидает ввода значений.
Значение по умолчанию:

""

хотя в bash’е вроде как

"#?"

$PS4 — приглашение четвертого уровня, выводится в начале каждой строки вывода во время трассировки выполнения (вызывается с ключом -x).
Значение по умолчанию:

"+ "

Во всех переменных можно использовать следующие спецсимволы (напомню, речь идёт об оболочке bash):

\a

символ Bell (звонок) (код 07)

\d

дата в формате «ДеньНедели Месяц Число» (т. е. «Tue May 26»)

\\

символ обратного слеша (обратная косая черта)

\e

символ Escape (код 033)

\h

имя хоста до первой точки

\H

полное имя хоста

\j

количество заданий, выполняемых оболочкой в фоне

\l

базовое имя наименования терминального устройства оболочки (в случае входа через ssh-клиент возвращает не полное имя, например pts/3, а только 3)

\n

символ перевода строки

\r

символ возврата каретки

\s

имя оболочки, базовое имя от переменной $0 (после последнего символа /)

\t

текущее время в 24-часовом формате (HH:MM:SS)

\T

текущее время в 12-часовом формате (HH:MM:SS)

\@

текущее время в 12-часовом формате (am/pm)

\A

текущее время в 24-часовом формате (HH:MM)

\u

имя текущего пользователя

\v

версия оболочки bash (например, 2.00)

\V

версия и номер релиза bash (например, 2.00.0)

\w

полный путь текущей директории

\W

базовое имя текущей директории

\!

номер истории зтой команды

\#

номер зтой команды

\$

если UID == 0, то символ ’#’, иначе ’$’

\nnn

символ, соответствующий восмеричному числу nnn

\[

начало последовательности невыводимых символов. Может использоваться для осуществления управления терминалом в приглашении

\]

конец последовательности невыводимых символов

\D{format}

строка format передаётся в strftime(3), результат вставляется строку приглашния оболочки, пустой формат приводит к выводу локального времени. Скобки необходимы.

Ну и напоследок бонус — скрипт генерации таблицы цветов в bash

2017   BASH   Linux   сисадминство   софт

Памятка для настройки DebWrt

 Давным-давно появилась у меня железка D-Link DIR-300/A2,  вот такая. Так как на ней есть разъём USB, то я поставил туда прошивку DebWrt, продукт противоестественного скрещивания Debian и OpenWrt

С тех пор на винте лежит текстовый файл, описывающий основные команды настройки этой ОС. Публикую здесь как памятку для себя (с моими комментариями), ну а если сей опус кому-либо когда-либо как-либо чем-то пригодится — я буду только рад!

Показать

cd /etc/network
rm interfaces // это симлинк на interfaces.firstboot
cp interfaces.firstboot interfaces
vi interfaces // настраиваем сетевые интерфейсы как нам нужно
// следующие команды необходимы для настройки доступа в интернет без перезагрузки устройства
// (после доступ будет реализован путём выдачи IP по DHCP от шлюза во внешнюю сеть)
ip a a $IP/$MASK dev $IF && echo '8.8.8.8' > /etc/resolv.conf && ip r a via $GW
// для обновления репозитория со squeeze до wheezy
cp /etc/apt/sources.list /etc/apt/sources.list.old
echo 'deb http://ftp.debian.org/debian wheezy main' > /etc/apt/sources.list
gpg --keyserver pgpkeys.mit.edu --recv-key F120156012B83718 && gpg -a --export F120156012B83718 | apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key 010908312D230C5F && gpg -a --export 010908312D230C5F | apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key CBF8D6FD518E17E1 && gpg -a --export CBF8D6FD518E17E1 | apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key 7638D0442B90D010 && gpg -a --export 7638D0442B90D010 | apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key 8B48AD6246925553 && gpg -a --export 8B48AD6246925553 | apt-key add -
// опционально
gpg --keyserver pgpkeys.mit.edu --recv-key 6FB2A1C265FFB764 && gpg -a --export 6FB2A1C265FFB764 | apt-key add -
aptitude update
aptitude upgrade
adduser $USER
echo '$USER ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers
// обновление системы, можно и aptitude upgrade/aptitude dist-upgrade впендюрить, если время позволяет
aptitude update
// установка нужных пакетов
aptitude install mc sudo locales bash-completion ntpdate openssh-server screen wpasupplicant
// установка опциональных пакетов
aptitude install most nload htop ccze telnet wavemon tcpdump fping nmap ipcalc console-cyrillic
// установка совсем уж опциональных пакетов
aptitude install apache2 php5 mysql-server mysql-client
// настройка локали, шрифтов, таймзоны
dpkg-reconfigure locales
dpkg-reconfigure console-cyrillic // если поставлен
dpkg-reconfigure tzdata

Далее следует настройка переменных и алиасов в ~/.bashrc и ~/.profile (а равно и в /root/.bashrc и /root/.profile).

Если кого заинтересовала эта прошивка — вот  ссылка на мою инструкцию по перепрошивке девайса (DIR-320/A*, версия прошивки — 10.03).

PowerShell is open sourced and is available on Linux

Исходная новость

Новость на ЛОРе
Новость на Опёнке

Показать

Интересно почитать первые комментарии ошарашенных читателей ЛОРа и Опёнка:

Безусловно — выборка не репрезентативна, отражает моё субъективное мнение и отношение к уёбищ ненужным поделиям Микрософт. Хотя объективности ради нужно сказать, что этот пост набран в ОС их разработки.

2016   Linux   в мире   интернет   ОС   события
Ранее Ctrl + ↓
Наверх