среда, 19 февраля 2014 г.

Автоматическое выключение linux - машины в определённый день месяца

Встала необходимость сделать так, чтобы в последнюю среду месяца (санитарный день) компьютер выключался самостоятельно несколько раньше, чем обычно. Пошарив немного по руководству cron понял, что вот прямо так сделать никак нельзя. Можно лишь указать промежуток времени особым способом, то есть, можно сказать, что я хочу, чтобы в конце месяца (задаётся числовым промежутком) и если день равен, скажем, среде, выключать в не в 18:00, а в 16:00. Но в этом случае, оно не будет проверять, что оба условия выполняются, а будет делать это если хотя бы одно выполнено.
Поэтому надо было сделать что-то чуть более сложное. В результате, я написал код на питоне. Совсем короткий и простой, но всё же:

import os
import time
from datetime import date
if (31 - date.today().day < 8 and date.today().weekday() == 2):
    os.system('/sbin/poweroff')
quit()
Работает вроде нормально. Добавил задание в cron.

среда, 15 января 2014 г.

Sftp в Linux

Товарищи! Друзья!
На пол срать нельзя!
Для этого есть яма.
Держите жопу прямо.
К чему я это? К тому, что иногда нет никакой возможности защититься от всякого нехорошего барахла. Просто я устал и хочу занести то, что сделал в дневник, чтобы потом было куда подсмотреть.
Значит, задача: организовать sftp - сервер для замены сетевой шары. Так.
Создадим пользователя без хомяка:
 useradd -d /dev/null -M -s /bin/fish user
Ну и пароль ему какой-нибудь придумаем:
passwd user
Это очень круто! Теперь не будет ещё одного гада, который гадит на диск. Но куда-то ему таки надо изливать то, что у него накопилось. Я вообще говоря, так сделал, потому что замучился переносить home. Он отчего-то дико косячил и мне это надоело. Поэтому я просто сделал автоматическое подключение диска и оно заработало, а вот хомяк чего-то никак не хотел. Но это фигня.
Дальше надо создать папку, которую хотим юзануть. Что-нибудь вроде
mkdir /media/diskex/; mkdir /media/diskex/user
Ну и назначим минимальные права. Это будет правильно. Не люблю, когда что-то делается помимо моей воли.
chown -R root:root /media/diskex/user; chmod -R 700 /media/diskex/user; chown -R user:user /media/diskex/user; chmod -R 770 /media/diskex/user
Круть! Теперь надо бы поправить файлик
mcedit /etc/ssh/sshd_config
 И в него уже в конце дописать что-то вроде
Subsystem sftp /usr/lib/openssh/sftp-server
Match user user
ChrootDirectory /media/diskex/
ForceCommand internal-sftp
AllowTcpForwarding no

Match user user2
ChrootDirectory /media/diskex/
ForceCommand internal-sftp
AllowTcpForwarding no

 Здесь, как видно, пользователей может туда ходить два и с разными именами. Если это, конечно, надо и вы создадите ещё и второго пользователя, повторив предыдущие шаги. При этом они никак не смогут лазать в папки, которые им не принадлежат и это тоже очень круто. Только те, что совпадают с их именами. По сути, это их хомяки (для умных /home).
Это всё, безусловно весело и интересно и вы уже поняли, что надо было удалить вот такую фигню:
#Subsystem sftp /usr/lib/openssh/sftp-server
В смысле поставить там решётку, да?
За пояснениями идите на...
(Фуууууф!..)
...идите на этот сайт.
Вот теперь уже всё хорошо и мы можем сделать последний штрих, который в нормальных системах выглядит так:
service ssh restart
Теперь можно радоваться и любоваться результатом. Косяк, конечно есть. И он в том, что люди-то будут видеть чужие хомяки, только войти в них не смогут, а это может породить желание это сделать. Ибо раз закрыто и не пускают, значит что-то скрывают, но вот прямо сейчас я не знаю как можно было бы их скрыть и убрать куда дальше.

понедельник, 1 июля 2013 г.

source.list debian, или любые репозитории, в сгенерированном автоматически source.list

Сегодня друг обратился ко мне с вопросом настройки свежекупленного нетбука. Собственно, делает он всё сам, и, слава Богу! не боится консоли, но опыта секса работы с ОС на ядре Linux у него явно меньше. Собственно проблема проявилась в нестабильных драйверах для его видиокарты (radeon hd 6290), а в официальном wiki было сказано, что лучше всего обновиться до expiremental, чтобы избавиться ото всех проблем.
После недолгих раздумий, я посоветовал ему попробовать всё же обновиться (хотя, ещё вчера я был люто против, но тогда проблема состояла исключительно в производительности).
Ну, так к чему весь этот долгий рассказ? А только лишь к тому, что помимо многих различных списков репозиториев и обычной логики есть ещё вот такой замечательный ресурс, который позволяет просто сгенерировать source.list для debian в несколько щелчков мыши. Даже для меня это удивительно. Но, очевидно, новичкам будет полезно.

воскресенье, 3 марта 2013 г.

LUG

Что такое LUG  писать здесь, я думаю, не стоит. Отмечу лишь одно: изначально предполагалось, что это не просто кучка людей, которые собираются попить вместе пива или что-то ещё. Но в итоге получается именно так. Нет, ну правда!
Местный (воронежский) именно так и делает. Попытки кого-либо на что-то сподвигнуть кончаются ничем. Но оно и понятно. Всё до безобразия просто: люди ничего не хотят делать просто так. Им от этого ничего не перепадает.
Изначально всю байду (ну, по крайней мере, когда я к ним присоединился) затеял местный провайдер (ну или кто они там?) Р-Телеком. Потом выянилось, что они просто хотели таким образом поиметь чуть больше клиентов. Когда осознание этого пришло, желание что-либо делать моментом отпало. Они решили, что к чёрту реагировать и просто проигнорировали сообщество. Типа "вы здесь за идею и мы вас не держим". Это понятно. Хорошо.
Потом, когда я устроился работать и понял, что могу взять просто сообщество и с их помощью сделать "всеобщее благо", найдя просто халявную крышу и компы для курсов, которые изначально предполагались, никто не среагировал. Нашлись и особо говнистные засранцы, которые вдруг решили, что я что-то требую (на самом деле спросил обещанное когда-то).
Самое обидное здесь то, что удалить свой аккаунт просто одной кнопкой не получится. Его можно только бросить. А жаль.
Коротко говоря, очень жаль, что сообщество (ну, по крайней мере местное) ни на что не годно. Я никого ни в чём не виню. Всё нормально. Просто никто не позаботился ни о какой материальной мотивации. А времена, когда люди могли просто так, за идею, сделать что-то, уже прошли.

вторник, 25 декабря 2012 г.

Alsa Truble

Сегодня (как и несколько безмолвных дней до этого) решил потрахаться с alsa. Стоит и молчит, зараза.
Облазил половину интернета, но ничего в итоге не нашёл путного. У людей это чаще всего не настраивалось. У меня стоит вшитая звуковуха SiS SI7012.
Добавил:

cat /etc/modprobe.d/aliases.conf
# These are the standard aliases for devices and kernel drivers.
# This file does not need to be modified.
#
# No new aliases should be added to this file, please file a bug against
# the kernel for any aliases which are still not built-in.
# network protocols ##########################################################
# alias net-pf-1  unix
# alias net-pf-2  ipv4
# alias net-pf-3  ax25
# alias net-pf-4  ipx
# alias net-pf-5  appletalk
# alias net-pf-6  netrom
# 7 BRIDGE
# alias net-pf-8  atm
# alias net-pf-9  x25
# alias net-pf-10 ipv6
# alias net-pf-11 rose
# alias net-pf-12 decnet
# 13 NETBEUI
# alias net-pf-15 af_key
# alias net-pf-16 af_netlink
# alias net-pf-17 af_packet
# 18 ASH
# alias net-pf-19 econet
# alias net-pf-20 atm
# 22 SNA
# alias net-pf-23 irda
# alias net-pf-24 pppoe
# 25 WANROUTER
# alias net-pf-26 llc2
# alias net-pf-31 bluetooth
# alias net-pf-33 af_rxrpc
alias net-pf-16-proto-1 wire
alias net-pf-16-proto-3 ip_queue
# alias net-pf-16-proto-4 inet_diag
# alias net-pf-16-proto-5 ipt_ULOG
# alias net-pf-16-proto-6 xfrm_user
alias net-pf-16-proto-8 scsi_transport_iscsi
alias net-pf-16-proto-9 audit
alias net-pf-16-proto-11 cn
# alias net-pf-16-proto-12 nfnetlink
alias net-pf-16-proto-13 ip6_queue
# alias net-pf-16-proto-14 dn_rtmsg
# executables formats ########################################################
install binfmt-0000 /bin/true
alias binfmt-204 binfmt_aout
alias binfmt-263 binfmt_aout
alias binfmt-264 binfmt_aout
alias binfmt-267 binfmt_aout
alias binfmt-387 binfmt_aout
# block devices ##############################################################
alias block-major-3-*  ide_generic
alias block-major-22-* ide_generic
alias block-major-33-* ide_generic
alias block-major-34-* ide_generic
alias block-major-37-* ide_tape
alias block-major-44-* ftl
alias block-major-46-* pcd
alias block-major-47-* pf
alias block-major-56-* ide_generic
alias block-major-57-* ide_generic
alias block-major-58-* lvm_mod
alias block-major-88-* ide_generic
alias block-major-89-* ide_generic
alias block-major-90-* ide_generic
alias block-major-91-* ide_generic
alias block-major-93-* nftl
alias block-major-97-* pg
# character devices ##########################################################
alias char-major-10-1 psmouse
alias char-major-10-139 openprom
alias char-major-10-157 applicom
alias char-major-10-181 toshiba
alias char-major-10-183 hw_random
alias char-major-10-187 irnet
alias char-major-10-189 ussp
alias char-major-10-250 hci_vhci
alias char-major-13-0  joydev
alias char-major-13-1  joydev
alias char-major-13-2  joydev
alias char-major-13-3  joydev
alias char-major-13-32 mousedev
alias char-major-13-33 mousedev
alias char-major-13-34 mousedev
alias char-major-13-35 mousedev
alias char-major-13-63 mousedev
alias char-major-13-64 evdev
alias char-major-13-65 evdev
alias char-major-13-66 evdev
alias char-major-13-67 evdev
alias char-major-19-* cyclades
alias char-major-20-* cyclades
alias char-major-22-* pcxx
alias char-major-23-* pcxx
alias char-major-27-* ftape
alias char-major-34-* scc
alias char-major-35-* tclmidi
alias char-major-48-* riscom8
alias char-major-49-* riscom8
alias char-major-57-* esp
alias char-major-58-* esp
alias char-major-63-* kdebug
alias char-major-67-* coda
alias char-major-75-* specialix
alias char-major-76-* specialix
alias char-major-81-* videodev
alias char-major-83-* vtx
alias char-major-89-* i2c_dev
alias char-major-90-* mtdchar
alias char-major-96-* pt
alias char-major-97-* pg
alias char-major-107-* 3dfx
alias char-major-109-* lvm_mod
alias char-major-166-* cdc_acm
alias char-major-171-0 raw1394
alias char-major-171-1 video1394
alias char-major-171-2 dv1394
alias char-major-171-3 amdtp
alias char-major-180-* usbcore
alias char-major-195-* nvidia
alias char-major-200-* vxspec
alias char-major-202-* msr
alias char-major-203-* cpuid
alias char-major-206-* osst
alias char-major-208-* ussp
alias char-major-227-* tub3270
#alias char-major-240-* usb-serial
#alias char-major-240-* hsfserial
#alias char-major-241-* hsfserial
# misc #######################################################################
#alias bt-proto-0 l2cap
#alias bt-proto-2 sco
#alias bt-proto-3 rfcomm
#alias bt-proto-4 bnep
#alias bt-proto-5 cmtp
#alias bt-proto-6 hidp
alias bt-proto-7 avdtp
alias cipcb0 cipcb
alias cipcb1 cipcb
alias cipcb2 cipcb
alias cipcb3 cipcb
alias dummy0 dummy
alias dummy1 dummy
alias plip0 plip
alias plip1 plip
alias slip0 slip
alias slip1 slip
alias tunl0 ipip
alias gre0 ip_gre
alias usbdevfs usbcore
alias nfs4 nfs
# work around other kernel issues ############################################
# The EHCI driver should be loaded before the ones for low speed controllers
# or some devices may be confused when they are disconnected and reconnected.
softdep uhci-hcd pre: ehci-hcd
softdep ohci-hcd pre: ehci-hcd
Затем:
cat /etc/modprobe.d/alsa-base.conf
# autoloader aliases
install sound-slot-0 /sbin/modprobe snd-card-0
install sound-slot-1 /sbin/modprobe snd-card-1
install sound-slot-2 /sbin/modprobe snd-card-2
install sound-slot-3 /sbin/modprobe snd-card-3
install sound-slot-4 /sbin/modprobe snd-card-4
install sound-slot-5 /sbin/modprobe snd-card-5
install sound-slot-6 /sbin/modprobe snd-card-6
install sound-slot-7 /sbin/modprobe snd-card-7
# Cause optional modules to be loaded above generic modules
install snd /sbin/modprobe --ignore-install snd && { /sbin/modprobe --quiet snd-ioctl32 ; /sbin/modprobe --quiet snd-seq ; }
install snd-rawmidi /sbin/modprobe --ignore-install snd-rawmidi && { /sbin/modprobe --quiet snd-seq-midi ; : ; }
install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 && { /sbin/modprobe --quiet snd-emu10k1-synth ; : ; }
# Prevent abnormal drivers from grabbing index 0
options bt87x index=-2
options cx88_alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
# Keep snd-pcsp from beeing loaded as first soundcard
options snd-pcsp index=-2
# Keep snd-usb-audio from beeing loaded as first soundcard
options snd-usb-audio index=-2
Но это не помогло и более того - alsamixer перестал запускаться. Переустановка не помогла.
Решил посмотреть в BIOS. Там ничего интересного не обнаружилось, но поменял настройки видио с AGP на PCI. Перезагрузился. И... О, чудо! Оно реально каким-то чудом вдруг заработало само собой. Не знаю даже, что именно сыграло роль - настройки, или BIOS, но, если вдруг оно кому надо, то попробуйте поковырять BIOS.

среда, 5 сентября 2012 г.

Удаленное подключение к рабочему столу Linux из Windows с помощью Xming и SSH

Удаленное подключение к рабочему столу Linux из Windows с помощью Xming и SSH

Только что нашёл эту клёвую статью. Мне в моей практике явно может понадобиться. Очень часто нужно получить доступ к машине куда более мощной, чем имеешь на данный момент и тут как ни одна другая подходит собственная "подстольная". Но чтобы не заморачиваться и не ставить кучку дополнительных приблуд, можно ограничиться указанными в статье программами для Windows. И уже на домашней машине запустить более или менее настроенную винду :) Ну и файлы также теперь всегда под рукой.

Всем удачи! Have fun and nice day :)

вторник, 4 сентября 2012 г.

Talend Open Studio for Data Integration. Конвертирование баз данных

Talend Open Studio for Data Integration - это отличный инструмент для переноса баз данных и их конвертирования. С удовольствием вам её презентую и очень рекомендую, так как она полностью бесплатна и распространяется на условиях GPL v2.