Архив метки: пример

Пример алиаса для bash

Пример использования команды 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

Всё что нужно для начала работы с Raspberry Pi

Что полезно знать

Для дистрибутива Raspbian по умолчанию логин pi, пароль raspberry

Стандартная консольная программа для изменения настроек малинки — raspi-config

Стандартная консольная команда для запуска оконного менеджера — startx

Максимальна скорость сети по Ethernet на самом деле не 100 Мбит/с, а около 24 Мбит/с (вроде потому что через шину USB)

Для ножек GPIO стандартное напряжение 3.3В, вроде как если превысить, то сгорит

Для удобства работы с ножками GPIO, на них можно одевать фишки с проводами, которые можно надёргать с материнской платы из старого системника (LPT, USB, звук от CDROM, фишки от кулеров и т.п.), ну или можно купить нормальные провода в радиотоварах.

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

Как подготовить загрузочную флэшку (под Linux)

Скачать дистрибутив в виде архива 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

Как подключиться по сети через SSH

Сперва выяснить ip-адрес, который получила малинка:

  • Если зашли локально через телевизор, то в консоли $ ifconfig eth0
  • Через вебморду роутера найти по списку арендованных адресов
  • Любым сканером сети
  • Просто угадать адрес командой ping

Подключиться к командной строке по SSH

  • Из консоли: $ ssh pi@192.168.1.30
  • Через программу PUTTY

Что рекомендуется настраивать в первую очередь

Через программу raspi-config

  • Сменить пароль по умолчанию
  • Расширить основной раздел на всю флэшку

Как присвоить статический ip-адрес

В файле /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

Ножки GPIO

Интерактивный справочник по ножкам

Работа с GPIO через файлы

Это пример выдачи напряжения 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 для BASH, и как провериться

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», значит система уязвима.

Powershell: Пример скрипта отправки email

Этот powershell-скрипт отправляет текстовое сообщение по электронной почте при условии, что авторизация на smtp-сервере не требуется. Например для MS Exchange компьютер, на котором выполняется скрипт, должен быть в списке Allow Relay на почтовом сервере.

$smtpServer = "mail.mydomain.local"
 $msg = New-Object net.mail.mailmessage
 $smtp = New-Object net.mail.smtpclient($smtpServer)
 $msg.from = "test@mydomain.ru"
 $msg.replyto = "user1@mydomain.ru"
 $msg.to.add("user2@mydomain.ru")
 $msg.subject = "Test message"
 $msg.body = "This is test message Это тестовое сообщение"
 $smtp.send($msg)

В данном случае письмо отправится на адрес user2@mydomain.ru

Пример net share с правами

Эта команда расшаривает васину папку MyFolder с полным доступом для самого Васи и с доступом на чтение для Пети:

C:\Windows\system32>net share MyFolder=c:\users\vasya\MyFolder /GRANT:vasya,FULL /GRANT:petya,READ

Ещё в тему:

Вывод списка и отключение пользователей через net session

Управляем сетевыми папками с помощью PowerShell, отчёты

Копирование прав на папки через powershell

Rundll32.exe для windows — как пользоваться

Здесь соберу параметры для запуска программы rundll32.exe. Сама по себе программа присутствует во всех версиях Windows. Приведённые команды проверял на Windows 7. Использовать её можно либо через пуск — выполнить, либо через командную строку, либо вписав её в создаваемый ярлык.

Сначала то, что может быть полезным:

rundll32 shell32.dll, ShellAboutA — вывод окна с версией windows, типа «О программе»

rundll32.exe netplwiz.dll, UsersRunDll — окно «Учётные записи пользователей»

rundll32.exe SHELL32.dll, Options_RunDLL 0 — окно настройки вида папок

rundll32.exe shell32.dll, Control_RunDLL desk.cpl desk, @Appearance — окно «Параметры значков рабочего стола», например добавить мой компьютер на рабочий стол

rundll32.exe SHELL32.dll, Options_RunDLL 1 — Свойства панели задач и меню Пуск

rundll32.exe KEYMGR.dll, KRShowKeyMgr — окно «Сохранение имён пользователей и паролей»

А теперь то, что может никогда не пригодиться, но тоже есть:

rundll32.exe WINSPOOL.DRV, ConnectToPrinterDlg или rundll32.exe PRINTUI.dll, ConnectToPrinterDlg — окно подключения к сетевому принтеру

rundll32.exe  joy.cpl, ShowJoyCPL — вызов окна настройки джойстиков

rundll32.exe TAPI32.dll, internalConfig — диалог «Телефон и модем»

rundll32.exe  inetcpl.cpl, LaunchInternetControlPanel — запуск окна настройки Internet Explorer

rundll32.exe   inetcpl.cpl, DisplayPopupWindowManagementDialog — окно «параметры блокирования всплывающих окон» Internet Explorer

Продолжение следует…

C#: Запуск команд CMD из кода программы

Для запуска сторонних программ из программы на C# в начало программы вставляем строчку

using System.Diagnostics;

и после этого запускаем команды CMD из нашего кода следующим образом:

Process.Start("calc");

Эта строчка например запустит виндовый калькулятор.

А эта строчка откроет проводник на диске D:

Process.Start("explorer""d:");

Так же можно запускать программы от имени другого пользователя, см. вамианты перегрузки .Start()