Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #Команда ниже покажет вам ваш внешний IP - это идеальный вариант, если в Сеть вы входите используя роутер.
- #Эта команда обращается к серверу ifconfig.co, который возвращает IP одной строкой без лишней писанины которая вам не #нужна.
- curl ifconfig.co
- #Да, это не скрипт, это небольшая команда, но если вы хотите превратить эту команду в скрипт,
- #вам достаточно поместить ее в текстовый файл, в итоге у нас получится небольшой bash скрипт:
- #!/bin/bash
- curl ifconfig.co
- #Сохраняeм скрипт в каталог ~/bin и даем права на исполнение:
- chmod +x ~/bin/yourip.sh
- #Почти готово, вы можно исполнить скрипт из командной строки используя команду yourip.sh.
- #C айпи закончили, посмотрим погоду с консоли.
- #Сводка погоды в консоли
- #!/bin/sh
- curl -4 wttr.in/Kiev
- #Этот скрипт позволяет получить сводку погоды на четыре дня, в данном случае погода для города Киев.
- #!/bin/sh
- dig +short txt $1.wp.dg.cx
- #Выше вы видите пример, как можно получить краткое описание чего-нибудь в Википедии, в нашем случае мы используем
- #DNS-запрос вместо обращения к веб-серверу. Веб-сервер через консоль также очень легко создать:
- #!/bin/sh
- while ( nc -l 80 < file.html > : ) ; do : ; done
- #Скрипт выше основан на утилите netcat (nc), часто ее называют швейцарским армейским ножом,
- #так как позволяет вытворять много трюков для сетевых опeраций. Скрипт простой он запускает
- #цикл, который выполняет команду nc, та уже слушает 80-й порт и в ответ на запрос отдает file.html,
- #отправляя переданный запрос в никуда (символ означает noop, то есть пустую операцию).
- #Используя простые скрипты и команд, вы можете слушать интернет-радио:
- #!/bin/sh
- mpv --volume=50 -playlist ~/16bit.fm_128.m3u
- #Конечно, до этого вам нужно скачать плей-лист радио в формате M3U с сайта радиостанции.
- #Если зaпустить MPlayer используя аргумент —input-ipc-server=/tmp/mpvsocket, им можно будет управлять,
- #записывая команды в файл. Например, настроить громкость:
- echo 'volume +10' | socat - /tmp/mpvsocket
- #Создаем два скрипта: первый для запуска, а другой для остановки радио (в котором мы пропишем строку killall mpv),
- #далее повесь на рабочий стол совместно настроив горячие клавиши DE для управления воспроизведением.
- #И готово, вы имеете плеер с помощью которого вы можете заускать интернет-радио.
- #Увлеклись сетевыми операциями, перейдем к локальным.
- #!/bin/sh
- tar -czf "../${PWD##*/}.tar.gz" .
- #Это скрипт создает архив tar.gz для текущего кaталога. Особое внимание нужно уделить конструкции ${PWD##*/},
- #которая бeрет весь путь до текущего каталога (переменная $PWD) далее удаляет первую чаcть до последнего слеша,
- #в итоге остается лишь имя каталoга и к нему добавляется расширение tar.gz. Если вы хотите узнать больше информации
- #по подобных конструкциях, вы можете прочитать выполнив в консоли команду man bash.
- #!/bin/sh
- while true; do
- inotifywait -r -e MODIFY КАТАЛОГ && ТВОЯ_КОМАНДА
- done
- #Скрипт выше запускает команду в ответ на изменение файлов в каталоге. Вы ее можете применять для разных целей, как пример для
- #автоматического включения плеера при сохранении MP3. Или же как пример выводить увeдомление на рабочий стол, используя команду
- #notify-send:
- notify-send "Файл изменен"
- ###### Для рабочего стола #####
- #Ниже вы увидите пример скрипта, который загружает случайные обои, которые опубликованы на reddit-канале wallpaper:
- #!/bin/bash
- wget -O - http://www.reddit.com/r/wallpaper |\
- grep -Eo 'http://i.imgur.com[^&]+jpg' |\
- shuf -n 1 |\
- xargs wget -O background.jpg
- feh --bg-fill background.jpg
- #Работает все довольно просто. Используя утилиту wget скрипт загружает страницу www.reddit.com/r/wallpaper, далее передает ее grep,
- #который уже ищет ссылки на imgur, и выбирает случайную с помощью shuf, загружает ее с помощью wget и устанавливает в качестве обоев
- #для вашего рабочего стола, используя команду feh (это миниатюрный просмотрщик изображений, который нужно предварительно устанoвить).
- #Вы этот скрипт можете добавить в обычный текстовый файл как я описывал выше, сохранить в формате sh, сделать исполняемым, добавить
- #к нему иконку и запускать с рабочего стола по клику и у вас будут меняться обои.
- #!/bin/sh
- state=`synclient | grep TouchpadOff | cut -d '=' -f 2`
- if [ $state = "1" ]; then
- synclient TouchpadOff=0
- else
- synclient TouchpadOff=1
- fi
- #Скрипт выше используется для включения и выключения тачпада вашего ноутбука: включает, если отключен, и наоборот.
- #Для корректной работы в нем используется утилита synclient, которая и позволяет управлять тачпадами которые в большинстве
- #производит Synaptics, это 90% возможно даже и более. После запуска утилита выводит много информации, так же строку
- #TouchpadOff = 1, если он активирован, и TouchpadOff = 2, если отключен. Скрипт прочитав эти значение и в зависимости от
- #состояния тачпада включит или отключит его.
- !#/bin/bash
- mpv tv:// -frames 3 -vo jpeg
- mv 00000003.jpg photo.jpg
- rm -f 0000*.jpg
- #Используя скрипт выше, вы можете создать снимок используя веб-камеру. В скрипте используется видеоплеер mpv который записывает
- #первые три кадра, снятые камерой, в файлы JPEG формата с именами 0000000.jpg, 00000002.jpg, 00000003.jpg итд, после переименовывается
- #третий снимок в файл photo.jpg, а остальные удаляются. Для чего используются три снимка? Они необходимы лишь для того, чтобы ваша
- #камера успела провести инициализацию, если использовать первые два снимка, то обычно вы получите черный снимок.
- #Бывают так же казусы с позиционированием, фото может быть перевернутым; чтобы этого избежать mpv нужно запускать с флагом -vf flip:
- mpv tv:// -frames 3 -vf flip -vo jpeg
- #Эту же команду, вы можете использовать для создания камеры слежения, которая будет делает снимки лишь в те моменты,
- #когда пользователь прикоснется к мыши:
- #!/bin/bash
- while true; do
- sudo cat /dev/input/mouse0 | read -n1
- mpv tv:// -frames 3 -vo jpeg
- mv 00000003.jpg `date +%F-%H-%M`.jpg
- rm -f 0000*.jpg
- sleep 10
- done
- #Скрипт выше использует бесконечный цикл, получая данные с устройства /dev/input/mouse0. Если данные есть, значит,
- #мышь была сдвинута или была нажата одна из ее кнопок. После используется mpv, для создания трех снимков, третьему снимку
- #присваивается имя текущей даты и удаляются первые два.
- #Если вы хотите записать полноценное видео с веб-камеры, как пример можно использовать подобный скрипт:
- #!/bin/bash
- mencoder tv:// -tv driver=v4l2:width=800:height=600:device=/dev/video0:fps=30:outfmt=yuy2:forceaudio:alsa:adevice=hw.2,0 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800 -ffourcc xvid -oac mp3lame -lameopts cbr=128 -o video.avi
- #В результате вы получите файл с названием video.avi в формaте MPEG4, битрейт 1800 и аудиофайл в формате MP3 с битрейтом 128.
- #!/bin/bash
- ffmpeg -f x11grab -r 25 -s 1366x768 -i :0.0 screencast.mpg
- #Используя скрипт выше, вы можете записать полноценный скринкаст. 1366×768 - это разрешение рабочего стола,
- #можете настроить под себя. Для создания скриншота отдельного окна, вы можете использовать команду import:
- import screenshot.png
- #Если запустить команду выше, значок курсора вашей мыши изменится на крестик, используя который, вы сможете выделить область
- #экрана как это вы делаете при создании скриншотов используя сторонние приложения или расширения. Если повесить эту команду на
- #одну из горячих клавиш, вы получите практически идеальную систему для создания скриншотов, и эта комбинация не будет кушать
- #вашу оперативную память, что значительно придает ей огромный плюс.
- #Вы также можете настроить внешний монитор используя консоль:
- #!/bin/sh
- if [ -z "$1" ]; then
- exit
- fi
- if [ $1 == "off" ]; then
- xrandr --output VGA-0 --off
- xrandr -s 0
- else if [ $1 == "on"]; then
- xrandr --output LVDS --auto --primary --output VGA-0 --auto --left-of LVDS
- xrandr --newmode "1920x1080" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync
- xrandr --addmode VGA-0 1920x1080
- xrandr --output VGA-0 --mode 1920x1080
- fi
- xrandr --dpi 96
- #Этот скрипт основывается на том, что основной монитор имеет имя LVDS, а внешний - VGA-0. Это стандартная ситуация
- #для всех ноутбуков; если вы не уверены, можно проверить выполнив команду xrandr: при передаче скрипту аргумента
- #off он отключает внешний монитор, аргумент on, в свою очередь, включает его, располагая по левую сторону от основного
- #(аргумент —left-of LVDS в первoй команде). После скрипт создает новую конфигурацию для монитоpа с разрешением 1920 x 1080
- #и активирует его. И под конец, скрипт устанавливает дефолтное знaчение DPI - так как при подключении монитора с другим
- #разpешением оно часто слетает.
- #В большинстве случаев команды xrandr —newmode … и xrandr —addmode … не нужны, так как Xorg получит конфигурацию монитора
- #и разрешение с помощью EDID. Иногда, однако, этого не происходит, и строку конфигурации, указываемую после аргумента —newmode,
- #приходится генерировать самостоятельно с помощью инструмента cvt:
- cvt 1920 1080
- #Используя инструмент cvt, можно сгенериpовать нестандартны разрешения, которые не поддерживаются монитором по умолчанию.
- #Ищем в Google из командной строки
- #Вернемся снова к сетевым сервисам. Как получить первый 10 результатов поиска в Google? Смотрим скрипт ниже:
- #!/bin/bash
- Q="$@"
- URL='https://www.google.de/search?tbs=li:1&q='
- AGENT="Mozilla/4.0"
- stream=$(curl -A "$AGENT" -skLm 10 "${GOOG_URL}${Q//\ /+}" | grep -oP '\/url\?q=.+?&' | sed 's|/url?q=||; s|&||')
- echo -e "${stream//\%/\x}"
- #Этот скрипт отправляет запрос к Google с помощью curl, заменяет пробелы в поисковой строке на плюсы.
- #После в ответном HTML выскакивают ссылки
- #Пример с сервисом YouTube:
- #!/bin/bash
- mpv -fs -quiet `youtube-dl -g "$1"`
- #Скрипт с примера выше проигрывает видео с указанным в аргументе ID с помощью плеера mpv. Заранее нужно установить youtube-dl.
- #Несколько примеров работы с Twitter. Ниже вы увидите скрипт полноценного бота, который на входе принимает команду,
- #выполняет ее с помощью командного интерпретатора и отправляет результат указанному юзеру.
- #!/bin/bash
- USER="Ваш Ник"
- while true; do
- CMD=`echo "/dma +1" | ttytter -script | sed 's/\[.*\]\ //'
- if [ $CMD != $OLD_CMD ]; then
- REPL=`$CMD`
- echo "/dm $USER ${REPL:0:140}" | ttytter -script
- CMD = $OLD_COMD
- fi
- sleep 60
- done
- #В скрипте используется консольный клиент ttytter, читая с цикла последнее значение direct message, после происходит проверка, не была ли эта команда выполнена, если нет, выполняет ее и отправляет указанному юзеру с переменной USER обрезая до 140 символов.
- #Чтобы все работало, вам нужно установить утилиту ttytter, запустить ее, после скопировать сгенерированную ссылку с консоли и вставить в адресную строку браузера, пройти подтверждение, согласиться, после получите ключ аутентификации, скопируйте и вставьте его в консоли в ttytter. Конечно, перед всем этим желательно добавить отдельного юзера и залогиниться под его учеткой.
- #Использовать твиттер можно не лишь в целях создания бота, но и для мониторинга машины. Скрипт ниже отправляет в ленту сообщение с информацией о состоянии машины (имя хоста, uptime, нагрузка, свободная память и нагрузка на CPU):
- #!/bin/bash
- HOST=`hostname -s`
- UP=`uptime | cut -d" " -f4,5 | cut -d"," -f1`
- LOAD=`uptime | cut -d":" -f5,6`
- MEM=`ps aux | awk '{ sum += $4 }; END { print sum }'`
- CPU=`ps aux | awk '{ sum += $3 }; END { print sum }'`
- tweet="Host: ${HOST}, uptime: ${UP}, cpu: ${CPU}%, memory: ${MEM}%, loadavg ${LOAD}"
- if [ $(echo "${tweet}" | wc -c) -gt 140 ]; then
- echo "FATAL: The tweet is longer than 140 characters!"
- exit 1
- fi
- echo $tweet | ttytter -script
- Напоследок смотрим скрипт ниже, этот скрипт используется для запуска и остановки торрент-клиента пока ваш ПК простаивает:
- #!/bin/bash
- IDLE=600000
- STOPCMD="transmission-remote -S"
- STARTCMD="transmission-remote -s"
- STOPPED="yes"
- while true; do
- if [ `xprintidle` -gt $IDLE ]; then
- if [ $STOPPED = "yes" ]; then
- $STARTCMD
- STOPPED="no"
- fi
- else
- if [ $STOPPED = "no" ]; then
- $STOPCMD
- STOPPED="yes"
- fi
- fi
- sleep 60
- done
- Каждую минуту скрипт уходит в бесконечный цикл и проверяет, сколько времени в миллисекундах прошло с момента, когда юзер выполнял последние действия (для этих целей используется xprintidle). Если прошло 600 000 мс (десять минут), скрипт выполняет команду, которая укaзана в переменной STARTCMD. В ином случае выполняется команда STOPCMD, но лишь в том случае, если до нее была выполнена STARTCMD. Если объяснить простым языком, вы ничего не делаете за компьютером десять минут, после запускается STARTCMD, в нашем случае это команда которая запускает все закачки в Transmission, если нет - все закачки приостанавливаются. Не любите клиент Transmission? Используем команды для Deluge, смотрим ниже:
- STOPCMD="deluge-console pause \*"
- STARTCMD="deluge-console resume \*"
- Вывод
- Описанное выше может показаться вам сложным или же лишним так как вместо писанины в консоли вы можете найти много утилит с графическим интерфейсом которые выполнят необходимые задачи в один клик без использования консоли. Да, соглашусь с вами, но не все доступно с графического интерфейса, часто именно консоль спасает от рутинной работы если уметь ей пользоваться. На этом пожалуй и окончим материал, если вы имеете чем поделиться(скриптами), оставляйте комментарии к материалу.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement