Как включить автодополнение команд в git

Для включения автодополнения команд, нам понадобятся исходники git. Самый простой способ это сделать — клонировать репозиторий.

[email protected]:~/src$ git clone https://github.com/git/git
Cloning into 'git'...
remote: Counting objects: 144635, done.
remote: Compressing objects: 100% (48001/48001), done.
remote: Total 144635 (delta 105598), reused 131816 (delta 94710)
Receiving objects: 100% (144635/144635), 33.51 MiB | 1.16 MiB/s, done.
Resolving deltas: 100% (105598/105598), done.

Нужные нам скрипты лежат в git/contrib/completion/:

[email protected]:~/src$ cd git/contrib/completion/
[email protected]:~/src/git/contrib/completion$ ls -l
итого 72
-rw-rw-r-- 1 rshramko rshramko 49578 Дек 10 07:16 git-completion.bash
-rw-rw-r-- 1 rshramko rshramko  2428 Дек 10 07:16 git-completion.tcsh
-rw-rw-r-- 1 rshramko rshramko  1395 Дек 10 07:16 git-completion.zsh
-rw-rw-r-- 1 rshramko rshramko 10588 Дек 10 07:16 git-prompt.sh

Предположим, мы настраиваем автодополнение для bash. В зависимости от глобальности настроек, либо копируем скрипт git-completion.bash в /etc/bash_completion.d/, либо в $HOME/.git-completion.bash.

В последнем случае, подключаем его через .bashrc:

source $HOME/.git-completion.bash

В результате, при работе с репозиториями git, имеем чудную подсказку, появляющуюся по двум Tab-ам:

[email protected]:~/src/git$ git log --pretty=<Tab><Tab>
email     format:   full      fuller    medium    oneline   raw       short     
[email protected]:~/src/git$ git log --pretty=

Заметки для чайников

Хочу попросить прощение у искушенных подписчиков за посты в блоге об «элементарных» вещах. Дело в том, что имея богатый опыт администрирования Linux на серверах, у меня есть определенные пробелы в использовании его в качестве desktop-а. И вот, после перерыва в несколько лет, я снова влился в стройные ряды поклонников, установив Ubuntu 11.10 на ноутбук.

И, естественно, что иногда у меня возникают разные мелкие проблемки, которые, вообщем-то, совсем не проблемки для linux-оидов с опытом. Но, раз они возникают у меня, значит они возникают и у других новичков. Поэтому и решил публиковать решение подобных вещей.

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

Как сменить экран входа в систему (Ubuntu)

Сегодня решил опробовать KDE в качестве desktop менеджера в Ubuntu 11.10. Соответственно пишу про самую первую возникшую элементарную проблему, после установки KDE из репозитария.

Выбор KDM в качестве менеджера по умолчаниюСама проблема заключалась в том, что я провтыкал настройки экрана входа в систему (login manager) при установке, согласившись с предложением по умолчанию. Для полноты ощущения, захотелось, чтобы вход в систему осуществлялся через родной kdm (KDE Desktop Manager).

Нет ничего проще. Запускаем реконфигурацию kdm:

[email protected]:~ >> sudo dpkg-reconfigure kdm

И выбираем его в качестве менеджера по умолчанию. Вот, собственно говоря и все. Осталось сделать контрольный logout для проверки работоспособности настроек.

Unity: как добавить иконку Skype в системный трей

dconf Editor screenshot

С появлением Unity, которая устанавливается в Ubuntu по умолчанию, возникло множество сюрпризов, как мелких, так и крупных.Одним из них является то, что далеко не каждая программа может повесить свою иконку в системный трей. Но, все решаемо.

Для управления поведением Unity нам понадобиться dconf-tools, которые по умолчанию не установлены:

host$ sudo apt-get install dconf-tools

Дальше запускаем dconf-edtior и идем в раздел desktop → unity → panel и меняем параметр «systray-whitelist», добавив в список скайп.

Для этого меняем:

['JavaEmbeddedFrame', 'Mumble', 'Wine', 'hp-systray', 'scp-dbus-service']

на

['JavaEmbeddedFrame', 'Mumble', 'Wine', 'hp-systray', 'scp-dbus-service', 'Skype']

В принципе, можно поступить ещё более прагматично, изменив список параметров на ['all'], чтобы в последствии избежать необходимости править его ещё раз.

Теперь нужно перезагрузиться, либо перезапустить unity. В последнем случае нажимаем комбинацию клавиш Alt-F2 и запускаем команду:

unity --replace

Как правильно обновить IOS в формате tar на коммутаторах Cisco Catalyst

Статья была написана очень давно, все никак руки не доходили довести до ума и выложить сюда. Сегодня всё-таки нашел время на неё.

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

Чтобы передать файл с IOS на коммутатор, вам понадобиться рабочий tftp-сервер, однако его настройка выходит за рамки данной статьи. Разместите tar-файл в рабочем каталоге сервера, после чего убедитесь, что файл имеет верную контрольную md5 сумму. Многие системные администраторы игнорируют сверку контрольных сумм по совершенно непонятным причинам. Эта процедура отнимает совсем немного времени, зато позволяет избежать больших проблем в будущем. И это время совершенно не сравнимо со временем восстановления коммутатора после заливки туда битого IOS-а.

Зайдите на коммутатор и выполните команду dir flash:, чтобы убедиться, что у вас имеется достаточно места на флеш-карте.

cisco #dir flash:
Directory of flash:/
2  -rwx        9392   Dec 8 2010 21:22:46 +02:00  private-config.text
547  -rwx        3096   Mar 1 1993 02:00:39 +02:00  multiple-fs
4  -rwx        9148   Dec 8 2010 21:22:46 +02:00  config.text
5  drwx         512   Mar 1 1993 02:09:03 +02:00  c2960-lanlitek9-mz.122-44.SE6
27998208 bytes total (18006528 bytes free)

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

cisco#delete /force /recursive flash:c2960-lanlitek9-mz.122-44.SE6 

Далее произведите загрузку и распаковку нового IOS-са на коммутатор:

cisco #archive tar /xtract tftp://c2960-lanlitek9-tar.122-52.SE.tar flash:
Loading c2960-lanlitek9-tar.122-52.SE.tar from 10.10.10.10 (via Vlan1): !
c2960-lanlitek9-mz.122-52.SE/ (directory)
c2960-lanlitek9-mz.122-52.SE/html/ (directory)
extracting c2960-lanlitek9-mz.122-52.SE/html/stylesheet.css (22059 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/ajax.js (28348 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/title.js (577 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/sorttable.js (48234 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/toolbar.js (6383 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/ip.js (3500 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/appsui.js (1749 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/helpframework.js (865 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/layers.js (1616 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/sitewide.js (12467 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/graph.js (39650 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/framework.js (24955 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/combo.js (9353 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/forms.js (13756 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/converter.js (4829 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/fpv.js (41015 bytes)!
extracting c2960-lanlitek9-mz.122-52.SE/html/more.txt (62 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/graph_dash.js (18865 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/telnet.shtml (6642 bytes)
extracting c2960-lanlitek9-mz.122-52.SE/html/bottombanner.htm (4108 bytes)
…
extracting c2960-lanlitek9-mz.122-52.SE/c2960-lanlitek9-mz.122-52.SE.bin (7731596 bytes)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
extracting c2960-lanlitek9-mz.122-52.SE/info (423 bytes)
extracting info (106 bytes)
[OK - 11448320 bytes]
cisco#

Теперь необходимо произвести проверку загруженного образа, чтобы убедиться в его корректности:

cisco#verify /md5 flash:c2960-lanlitek9-mz.122-52.SE/c2960-lanlitek9-mz.122-52.SE.bin
.............................Done!
verify /md5 (flash:c2960-lanlitek9-mz.122-52.SE/c2960-lanlitek9-mz.122-52.SE.bin) = 4568ddfab7a957c62821e0011b3b4ed0
cisco#

Остался последний шаг: перезагрузить коммутатор и убедиться что все работает:

cisco#reload
Proceed with reload? [confirm]

Как вы видите, процедура обновления IOS довольно проста и незатейлива. Однако, хотелось бы ещё раз подчеркнуть, что она небезопасна, особенно, если вы удаляете старый IOS перед заливкой нового. Если вы работаете с удаленным коммутатором, то вы должны быть железно уверены, что канал связи будет работать стабильно на протяжении всей процедуры обновления. В противном случае вас ждет поездка и обучение восстановлению коммутаторов в полевых условиях.

Calibre: читаем книги в Linux

Пару лет назад я опубликовал пост Читалка fb2 для linux. Откровенно говоря, описанные там программы не впечатляют. Так, третий сорт —не брак. Я же, со временем, книжки на десктопе перестал читать вообще, пользуясь телефоном с WinMobile. А недавно приобрел для этих целей читалку с электронными чернилами. Но не об этом речь. Меня заинтересовал формат ePub, и в процессе поиска удобноваримого конвертора fb2↔ePub, я нашел совершенно удивительную программку под названием Calibre. И она мне настолько понравилась, что я даже переборол свою лень и теперь пишу эту заметку.

Разработчики Calibre позиционируют свое творение как «One stop solution to all your e-book needs». И я с ними совершенно согласен. Это не просто читалка. Это менеджер электронных книг, имеющий встроенный конвертор и умеющий работать напрямую со многими типами eBook Reader. Программа кростплатформенна, поскольку написана на python, имеет инсталляторы под MacOS, Windows и Linux. Continue reading Calibre: читаем книги в Linux

Gentoo: проблема с resolv.conf в новой системе

Заметка относится к категории «Для чайников»

В хэндбуке Gentoo есть маленькая недописка по поводу конфигурирования сети в новой системе. Если делать все по написанному, то после первой перезагрузки машина теряет dns, так как resolv.conf очищается. Впрочем, если не пофиксить такое поведение, то конфигурация резолвера будет очищаться при каждой перезагрузке.

Лечиться очень просто. В /etc/conf.d/net нужно добавить адреса нужных DNS-серверов:

dns_servers_eth0="8.8.8.8 8.8.4.4"

P.S. Поскольку заметка для чайников, то для тех кто не в теме, скажу, что в вышеуказанной конфигурации используются сервера Google Public DNS.

Онлайн-утилита для find

Нарыл довольно полезную онлайн-утилиту и спешу поделиться ссылкой. Это постоитель параметров find http://find.unixpin.com/ru/.

Учитывая количество этих самых параметров, думаю, данный ресурс будет полезен для многих сисадминов.

mysqldump: скрываем параметры

До сегодняшнего дня резервные копии баз MySQL я делал при помощи примитивного скрипта, в котором настройки подключения к серверу были жестко забиты в качестве параметров mysqldump.

К сожалению, это не самый безопасный путь резервирования, так как любой другой пользователь, просмотрев список процессов, легко сможет увидеть рутовый пароль. Чем это чревато, думаю, объяснять не нужно.

Сегодня на одном из форумов наткнулся на более безопасный вариант — использование опции --defaults-extra-file, которая позволяет вынести параметры, в том числе и пароль, во внешний файлик. Таким образом можно легко обезопаситься от подглядывания.

Формат файла следующий:

host:~ # cat client.cnf
[client]
host     = localhost
user     = root
password = xxxxxxxxxxx
socket   = /path/to/mysqld/mysqld.sock

Единственный ньюанс при использовании опции --default-extra-file — она должна использоватся в качестве первого аргумента команды:

To work properly, each of these options must immediately follow the command name, with the exception that --print-defaults may be used immediately after --defaults-file or --defaults-extra-file. Also, when specifying file names, you should avoid the use of the “~” shell metacharacter because it might not be interpreted as you expect.

В противном случае возникает малоинформативная ошибка, попытка решить которую, собственно, и сподвигла написать меня этот пост:

host:~ # mysqldump  -uroot --defaults-extra-file=client.cnf mydatabase
mysqldump: unknown variable 'defaults-extra-file=client.cnf'

Как мониторить изменения конфигурации Cisco средствами IOS

В предыдущем посте я писал о том, как при помощи команды archive настроить автоматическое сохранение конфигурации при её записи в NVRAM.

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

Как и в предыдущем случае, ничего сложного во включении этой возможности нет.

Continue reading Как мониторить изменения конфигурации Cisco средствами IOS