Translate

Показ дописів із міткою shell. Показати всі дописи
Показ дописів із міткою shell. Показати всі дописи

неділя, 19 січня 2014 р.

Speedtest from shell console

Існують різні способи для перевірки швидкості інтернет з'єднання і мабуть найбільш популярний - це speedtest.net. Проте для цього необхідний браузер із підтримкою adobe flash і середовище в котрому він власне зможе запускатись. Тому у якості альтернативи раджу спробувати speedtest-cli, консольну програму, що виконує абсолютно ті ж функції.

Установку speedtest-cli можна виконати декількома способами: наприклад через pip чи easy_install. Тому спершу встановимо python-pip:

# apt-get install python-pip

Та після скачаємо і установимо speedtest-cli:

# pip install speedtest-cli

Все готово для нашої початкової цілі, тому запускаємо:

$ speedtest
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Domashnya Merezha LLC (79.28.193.171)...
Selecting best server based on ping...
Hosted by LLC"Astelit" (Kiev) [2.52 km]: 10.649 ms
Testing download speed........................................
Download: 73.08 Mbit/s
Testing upload speed..................................................
Upload: 90.80 Mbit/s

вівторок, 12 листопада 2013 р.

Shc: compile bash-script to binary view

Скоріш за все вам навіть це не спадало на думку, проте так, насправді, є можливість скомпілювати bash-скрипт у бінарний вигляд. Щоправда це не зовсім так, адже програма, мова про яку піде далі, спочатку транслює bash-скрипт в Cі-скрипт, а вже потім його компілює. Як наслідок, ніхто і ніколи не побачить того, що було "накостилячено" в скрипті. Проте таким чином також можна заборонити редагування коду чи приховати паролі, котрі вживаються в скрипті і мають бути недоступні всім іншим. 

Ім'я цієї програми Shc і, на щастя, вона відсутня в репозиторіях. Тому зкомпілюємо її :

# wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
--2013-11-12 01:40:16--  http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.9.tgz
Resolving www.datsi.fi.upm.es (www.datsi.fi.upm.es)... 138.100.9.22
Connecting to www.datsi.fi.upm.es (www.datsi.fi.upm.es)|138.100.9.22|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 20536 (20K) [application/x-gzip]
Saving to: ‘shc-3.8.9.tgz’

100%[====================================================>] 20 536      --.-K/s   in 0,1s    

2013-11-12 01:40:16 (150 KB/s) - ‘shc-3.8.9.tgz’ saved [20536/20536]

# tar xvfz shc-3.8.9.tgz
shc-3.8.9/CHANGES
shc-3.8.9/Copying
shc-3.8.9/match
shc-3.8.9/pru.sh
shc-3.8.9/shc-3.8.9.c
shc-3.8.9/shc.1
shc-3.8.9/shc.README
shc-3.8.9/shc.html
shc-3.8.9/test.bash
shc-3.8.9/test.csh
shc-3.8.9/test.ksh
shc-3.8.9/makefile

# cd shc-3.8.9

четвер, 15 серпня 2013 р.

Dialog: ncurses-інтерфейс до shell-скрипта

Мабуть багато-хто якось думав, що було б непогано наділити власний скрипт графічним інтерфейсом. Навіщо він потрібен - це вже інше питання: наприклад, для людей, далеких від консольних програм, користування псевдографічним інтерфейсом буде зрозумілішим чи просто таким чином скрипт буде виглядати дещо професійніше або ж ви лише думаєте, що він необхідний - а насправді це просто марнування часу. Для реалізації таких простих інтерфейсів будемо використовувати програму dialog (ncurses-інтерфейс) та shell.

Звісно програму необхідно спочатку встановити:

# aptitude install dialog

Продемонструю його роботу з найпростішим case-скриптом.

#!/bin/bash

dialog --title 'Перезапуск мережі' \
       --yesno "Ви насправді бажаєте перезавантажити сервіс мережі на комп'ютері?" 10 40

case "$?" in
'0')
sudo service networking restart > /dev/null &2>1
echo 'Restarting...'
;;
'1')
exit 0
;;
-1|255)
echo "Сталась помилка, або ви натиснули ESC"
esac

Ключем "-yesno" вказуємо програмі dialog створити вікно з вибором "Так" чи "Ні", "--title" - встановлює назву вікна. Відповідь, що була обрана буде ідентифікуватись зі змінної $? (код завершення останньої команди). Тобто dialog буде повертати "0", якщо було обрано "Yes" та "1" - якщо "No". "10 40" - це позиція вікна, можна указати дефолтні - "0 0".
Також dialog повертає код "-1" у випадку, коли сталась помилка та "255", якщо було натиснено клавішу ESC.