Предполагается, что по SSH зашли под тем же пользователем, который зашёл на компьютер в GUI и локально. То есть зашли по SSH под логином john, и локально в GUI вход выполнен под пользователем john.
Допустим, нужно удаленно запустить Pidgin.
Выполняем по SSH команды:
export DISPLAY=:0
pidgin &
В итоге на удалённом компьютере запустится Pidgin.
Запуск GUI-приложения на удаленном компьютере через SSH
November 12th, 2012passwd не меняет пароль
November 1st, 2012Наблюдал в Ubuntu 11.10.
При попытке поменять свой же (пользовательский) пароль командой passwd (а также при попытке поменять пароль юзера от рута) – выскакивало сообщение:
Ошибка при операциях с маркером проверки подлинности
и пароль не менялся.
Решение было найдено в инернете – нужно установить пакет libpam-cracklib и выполнить команду pam-auth-update (при запуске она выдала псевдо-меню с выбранными пунктами – я согласился с дефолтовыми вариантами и просто нажал Enter). Проблема решена.
Включение/выключение принтера из консоли
October 29th, 2012Включить/выключить принтер можно командой cupsenable/cupsdisable соответственно. Смотрим название принтера командой lpq (показывает только один принтер в системе), или lpstat -a (если в системе несколько принтеров) и выполняем команду:
lexus@lexus:~$ lpq
Kyocera-Mita-FS-1030D готов
нет записей
lexus@lexus:~$ cupsdisable Kyocera-Mita-FS-1030D
lexus@lexus:~$ lpq
Kyocera-Mita-FS-1030D не готов
нет записей
lexus@lexus:~$
Результат наших действий можно увидеть и через графический интерфейс (принтер Kyocera-Mita-FS-1030D теперь выключен):
На практике пришлось применить в ситуации, когда принтер HP LaserJet Professional P1102 “засыпал” через какое-то время (причем отключение в нём самом этой функции родным ПО из-под Windows не спасло), и работа вставала. :)
Добавили запись в crontab пользователя (cupsenable и cupsdisable прекрасно работает без sudo) и сказали ей выполняться каждые 5 минут:
# Enabling HP-LaserJet-Professional-P1102 printer each 5 minutes
*/5 * * * * /usr/sbin/cupsenable HP-LaserJet-Professional-P1102
Повторное выполнение ‘cupsenable’ негативно на работе принтера не сказывается, т.е. предупреждений вида “этот принтер уже итак выключен” не выскакиевает.
*BSD smssend
October 4th, 2012http://www.freebsdsoftware.org/misc/smssend.html
PostgreSQL: удаляем пустые строки
September 22nd, 2012Полностью пустая строка удаляется командой:
DELETE FROM tablename WHERE columnname IS NULL;
Asterisk: конвертируем файлы для MOH
August 20th, 2012Вариантов много, подробности тут http://www.voip-info.org/wiki/view/Convert+WAV+audio+files+for+use+in+Asterisk
Я сначала конвертировал .mp3 в .wav, но Asterisk ругался, поэтому пришлось .wav конвертировать в .sln, он очень хорош для Asterisk’a.
mpg123 -w foo-out.wav foo-in.mp3
sox foo-in.wav -t raw -r 8000 -s -2 -c 1 foo-out.sln
По ссылке выше написано, что можно сразу из .mp3 в .sln, но у меня не получилось.
Asterisk: Provide Music on Hold to the calling party until the called channel answers
August 17th, 2012В Интернете много пишут про MusicOnHold, т.е. музыка при удержании звонка. Но когда мы хотим слышать музыку, пока на том конце не успели поднять трубку, MusicOnHold – не совсем то, что нам нужно. Следует использовать параметр ‘m‘ для приложения Dial.
exten => _XXXX,1,Dial(SIP/${EXTEN},15,m)
exten => {EXTEN},n,Hangup()
Обратите внимание, что сначала указывается, как долго дозваниваться, прежде чем звонок будет завершен (15 секунд), а только потом параметр музыки (m). Если поменять местами, музыка играть не будет.
Файл musiconhold.conf тоже должен быть отредактирован.
В минимальной конфигурации этого будет вполне достаточно:
[general]
[default]
mode=files
directory=moh
random=yes
Asterisk, codecs, audio files
August 1st, 2012В Asterisk разрешены кодеки alaw и g729. Также включена поддержка русского языка:
часть файла sip.conf:
disallow=all
allow=g729
allow=alaw
...
language=ru
Поэтому скачиваем два файла:
http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-ru-g729-current.tar.gz
http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-ru-alaw-current.tar.gz
и распаковываем их в соответствующую директорию – /usr/share/asterisk/sounds/ (по крайней мере в Debian так), предварительно создав в ней директорию ru.
Теперь звуки будут проигрываться независимо от того, на какой кодек настроена наша SIP-аппаратура.
Asterisk-1.8 на Debian 6.0.5 Squeeze
July 27th, 2012- Устанавливаем Debian
- Устанавливаем пакет python-software-properties:
sudo apt-get install python-software-properties
- Импортируем public-key:
sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 175E41DF
Если будут проблемы с импортированием, можно попробовать вот так:wget http://packages.asterisk.org/keys/175E41DF.pub -O - | sudo apt-key add -
- Добавляем в /etc/apt/sources.list репозиторий:
deb http://packages.asterisk.org/deb squeeze main
deb-src http://packages.asterisk.org/deb squeeze main
- Опциональнодобавляем репозиторий ветви Proposed:
deb http://packages.asterisk.org/deb squeeze-proposed main
deb http://packages.asterisk.org/deb squeeze-proposed main
- Устанавливаем:
sudo apt-get update && sudo apt-get install asterisk-1.8
Чуть подробнее и по-английски – на официальном сайте: https://wiki.asterisk.org/wiki/display/AST/Asterisk+Packages
MySQL: смотрим список пользователей
July 9th, 2012Заходим в mysql под пользователем root , в базу mysql:
mysql -u root -p mysql
И смотрим всю информацию о пользователях (хранится она, как можно понять, в базе под одноименным названием “mysql”, в таблице “user”):
mysql> select * from user;
Этот запрос выведет достаточно много информации, которая некрасиво умещается на экране. Поэтому сначала можно посмотреть список колонок этой таблицы:
mysql> describe user;
… а потом сделать запрос только по интересующим нас колонкам:
mysql> select host,user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| 127.0.0.1 | root |
| lexus | root |
| localhost | debian-sys-maint |
| localhost | root |
+-----------+------------------+
4 rows in set (0.00 sec)
Creating user petrov_ak, who will connect from anywhere (%):
mysql> CREATE USER 'petrov_ak'@'%' IDENTIFIED BY 'pAsSwOrD'; Query OK, 0 rows affected (0.00 sec)
Grant privileges. Let him SELECT only from DB ‘asterisk’, table ‘cdr’:
mysql> GRANT SELECT ON asterisk.cdr TO 'petrov_ak'@'%'; Query OK, 0 rows affected (0.00 sec)