Nová – čistá instalace phpmyadmin

Jelikož jsem poslední dobou na více stanic musel několikrát instalovat phpmyadmina, tak jsem si pro sebe napsal malý skriptík:

function install_new_phpmyadmin() {
    cd /tmp
    # ----------------------------
    # -> Get phpmyadmin version
    VERSION="${1}" # read first argument
    if [ -z "${VERSION}" ]; then
      TXT_DATA="$(wget https://www.phpmyadmin.net/home_page/version.txt -q -O-)"
      VERSION="$(echo ${TXT_DATA} | cut -d ' ' -f 1)"
      echo "Detecting last version: ${VERSION}"
    else
      echo "Using manual version: ${VERSION}"
    fi
    # ----------------------------
    # Init values
    DIRNAME="phpMyAdmin-${VERSION}-all-languages"
    FILENAME="${DIRNAME}.tar.gz"
    PHPMYADMIN="/usr/share/phpmyadmin"
    # ----------------------------
    # Download file and extract
    sudo wget "https://files.phpmyadmin.net/phpMyAdmin/${VERSION}/${FILENAME}"
    sudo tar xzf "${FILENAME}"
    sudo mkdir ${PHPMYADMIN}
    sudo mv ${DIRNAME}/* ${PHPMYADMIN}
    rm -rf "${DIRNAME}" "${FILENAME}" # clean
    # ----------------------------
    # Copy config and replace values
    sudo cp ${PHPMYADMIN}/config.sample.inc.php  ${PHPMYADMIN}/config.inc.php
    sudo mkdir ${PHPMYADMIN}/tmp && sudo chmod 777 ${PHPMYADMIN}/tmp
    RANDOM_SECRET=$(tr -dc 'a-zA-Z0-9~!@#$%^&*_-' </dev/urandom | head -c32 2>/dev/null)
    sed -i "s/\$cfg\['blowfish_secret'\] = '';/\$cfg['blowfish_secret'] = '${RANDOM_SECRET}';/" ${PHPMYADMIN}/config.inc.php
}
# PhpMyadmin 4.9.10 -> ( PHP 5.5 to 7.4 and MySQL/MariaDB 5.5)
install_new_phpmyadmin "4.9.10";

ln -s /usr/share/phpmyadmin /var/www/html

Python, bash – ověření zda skript běží pod sudem

Čas od času se hodí některé skripty pouštět pod rootem. Asi jeden z nejjednodušších způsobů je na začátek vašeho skriptu dát tento kód:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os

if os.geteuid() != 0:
    print "Skript musi byt spusten pod sudem!"
    exit()

Ověří se zda je skript spuštěn pod rootem a pokud ne, tak se skript sám ukončí.

Jestli máte raději Bash, tak tam se to udělá takto:

#!/bin/bash

if [ "$USER" != 'root' ]; then
    echo "Skript musi byt spusten pod sudem!"
    exit
fi

Spouštění suda bez hesla

Pokud někdy chcete spouštět příkazy bez nutnosti zadávání hesla jistě se vám bude hodit toto:

sudo visudo

a na konec souboru přidám řádek:

jmenoUzivatele ALL = NOPASSWD: ALL

Z bezpečnostního hlediska je to strašná prasárna, může se to ale hodit pokud nechcete zcela vypínat sudo a potřebujete nastavit root práva pouze některému z uživatelů.

Linux – výchozí editor v terminálu

Pokud nemáte rádi na linuxu defaultní editor vi a chtěli by jste používat třeba nano, stačí přejít do rootu svého profilu /home/jmenouzivatele/ a editovat soubor .bashrc
Tedy:

nano ~/.bashrc

zde pak třeba na konec souboru přidáme řádek:

export EDITOR="/usr/bin/nano"

Nyní máme nastavený jako výchozí editor nano 😉

Ubuntu – Wakeup on Lan

Musíme mít nainstalované tyto balíčky:

sudo apt-get install ethtool
sudo apt-get install wakeonlan

Pomocí konzole, nebo skriptu pak můžeme probudit náš počítač:

#!/bin/bash

wakeonlan FF:FF:FF:FF:FF:FF

Bash – načtení externího zdroje

Zkoušeli jste někdy spouštět skript z jiného umístění než kde se skutečně nalézá? Jestli ano, tak jste si určitě všimli že pokud načítáte konfigurační soubor, musíte používat absolutní cestu.

Jenže co když skript chcete dát k dispozici někomu jinému, který se třeba v bashi vůbec nevyzná a musel by znovu nastavovat cesty.

Já jsem to vyřešil takto:

$(cd $(dirname $0) && pwd)

No a rovnou si to ukážeme na příkladu:

Soubor example.sh

#!/bin/bash
CONFIGFILE="$(cd $(dirname $0) && pwd)/config.ini"
if [ -f "$CONFIGFILE" ]
then
    # Nacteni configu
    source $CONFIGFILE
else
    echo "ERROR: Nemuzu nalezt "$CONFIGFILE""; exit
fi

Soubor config.ini

echo "Ahoj, ja jsem config.ini"

Tento příklad se vám bude hodit pokud skripty spouštíte třeba přes cron.

Bash – rozpoznání architektury OS

#!/bin/bash
case $(uname -m) in
x86_64)
    echo "ARCH=x86_64"
    wget http://domena.tld/balicek_amd64.deb
    echo
    echo Instaluji balicek
    echo
    sudo dpkg -i balicek_amd64.deb
    ;;
i*86)
    echo "ARCH=i*86"
    wget http://domena.tld/balicek_i386.deb
    echo
    echo Instaluji balicek
    echo
    sudo dpkg -i balicek_i386.deb
    ;;
*)
    echo "Error + popisek" # Error - Neznama architektura
    ;;
esac