Bash
2021-04-28T13:02:00+02:00Ubuntu (operační systém)
Příkazy pro Shell Bash na Ubuntu
Ubuntu Server 24.04 – možnost vypnutí displeje po určité době
Jako uživatel „root“ upravíme následující řádek v souboru „/etc/default/grub“. Uložíme a odejdeme.
sudo nano /etc/default/grub
[...]
GRUB_CMDLINE_LINUX_DEFAULT="consoleblank=60"
[...]
Pokud tento soubor změníme, spustíme poté ‚update-grub‘ pro aktualizaci a restartujeme.
sudo update-grub
sudo shutdown -r now
Nyní by měl dispej zhasínat po 60 sekundách.
Ubuntu Server – zabránění standby režimu při zavření notebooku
# Vytvoříme adresář logind.conf.d:
sudo mkdir -p /etc/systemd/logind.conf.d
# a v něm vlastní konfigurační soubor 99-ignore-lid.conf:
sudo nano /etc/systemd/logind.conf.d/99-ignore-lid.conf
# Do tohoto souboru vložíme:
HandleLidSwitch=ignore
HandleListSwitchExternalPower=ignore
HandleLidSwitchDocked=ignore
# Poté uložíme soubor a restartujte službu:
sudo systemctl restart systemd-logind
# Celkové nastavení (mělo by zůstat zachováno i po aktualizacích OS) můžeme zkontrolovat příkazem:
systemd-analyze cat-config systemd/logind.conf
Možnost blokování útočících IP adres na server
Zablokování IP adresy
/sbin/route add -host 192.168.0.123 reject
Po restartu serveru je nutné znova nastavit.
Odblokování IP adresy
route del 192.168.0.123 reject
Hromadná úprava EXIF dat v JPEG obrázcích – nastavení data a času
Nastaví datum a čas, uložený v hlavičce Exif k tomu, co je uvedeno na
příkazovém řádku. Čas musí být specifikován jako
yyyy:mm:dd-hh:mm:ss
např. v adresáři s příslušnými fotkami spustíme:
jhead -ts2016:12:31-23:59:59 *.jpg
Parametr -ts<datetime>
viz. dokumentace programu Jhead.
Pokud příkaz jhead
vypíše: File xy.jpg
contains no Exif timestamp to change a potřebujeme např. změnit
hromadně datum velkého množství fotek před uploadem na photos.google.com,
vystačíme si s příkazem touch
, např.:
touch *.jpg -t 201612312359
Spojení pdf souborů
sudo apt-get install pdftk
pdftk 1.pdf 2.pdf 3.pdf cat output merged.pdf
Zálohování
Příklad vytvoření zálohy adresáře home s názvem
home.tar.gz
:
cd /
tar czf home.tar.gz home
S výpisem spotřebovaných časů na vytvoření zálohy
Před zálohovací příkaz stačí zapsat time
:
time tar czf home.tar.gz home
Další používané příkazy
> hello.txt # vymaže obsah souboru hello.txt
/sbin/route add -host 192.168.0.123 reject # zablokování útočící IP adresy
a2dismod ssl
a2enmod ssl
a2enmod rewrite && service apache2 restart # enable
apache2 -v # verze
apache2ctl -M # Dump a list of loaded Static and Shared Modules.
apt-cache search php7.0 # seznam dostupných PHP modulů
apt-get autoremove
apt-get install apt-show-versions
apt-get install openssh-server
apt-get install php5-sqlite # (pokud php hlásí: could not find driver; poté se musí restartovat apache2)
apt-get install rhash # umí SHA-3
apt-get install tcpdump # paketový analyzér
apt-get -f install # pokusí se opravit porušené závislosti
apt-get dist-upgrade # Povyšuje balíky, mající nové závislosti. Nedělá
upgrade na novou verzi systému, to dělá do-release-upgrade
apt-get update
apt-get upgrade
apt-get update && apt-get upgrade
apt-show-versions -a nginx # zobrazí dostupné verze balíků v distribuci
blkid # zjištění UUID všech svazků
cat ~/.ssh/id_rsa.pub # zobrazí veřejný klíč
cat xa* > xxx.mkv # spojí rozdělené soubory (viz. příkaz split)
cd # změní aktuální adresář
composer update # Získá nejnovější verze závislostí a aktualizuje soubor `composer.lock`
composer show -l # Seznam všech nainstalovaných balíčků včetně jejich nejnovější verze.
convert -flatten img.png img-white.jpg # nahradí v PNG transparentní pozadí v JPG bílým
cp # kopíruje soubory a adresáře
chmod 750 index.php # změna práv souboru
curl -I https://www.seznam.cz # zobrazí HTTP hlavičku
curl -I -L http://seznam.cz # zobrazí HTTP(S) hlavičky všech přesměrování
curl http://wttr.in/ # počasí
dir
df -h # využití místa na systému souborů
dmidecode --type memory # RAM info
do-release-upgrade # upgrade verze systému
do-release-upgrade -d # upgrade do vývojové verze systému
dovecot --version # verze Dovecot
dpkg -i xxx # instaluje balíček xxx
dpkg --list | grep linux-image # seznam starších verzí kernelů přítomných v systému
dpkg-query -S mysql-server # zjištění verze MySQL
dpkg-reconfigure -plow unattended-upgrades # automatická instalace stabilních aktualizací
dpkg-reconfigure dash # Dash je novější shell. Pokud chceme výchozí Bash, odpovíme No
dpkg-reconfigure mariadb-server-10.0 # rekonfigurace nainstalované DB, např. při ztrátě hesla
du -sh /etc # velikost adresáře /etc
dumpe2fs -h /dev/vda1 # informace o systému souborů
echo $SHELL # vypíše aktuální shell
echo 'Hello, World!' > foo.txt # vytvoří soubor foo.txt a zapíše Hello, World!
echo 'Hello, World!' >> foo.txt # připíše do souboru foo.txt Hello, World!
echo -n hello | rhash --sha3-512 - # SHA-3 hash
echo "test" | mail -s predmet jsmith@example.org
env # výpis proměnných prostředí
ffmpeg -i input_file.mp4 -vcodec copy -an output_file.mp4 # odstraní audio z mp4
ffmpeg -ss 1 -i $(youtube-dl -f 22 --get-url https://youtu.be/6yM1JhbTpD8) -t 13 -c:v copy -c:a copy spot3.mp4 # spot
find . -type f | wc -l # spočítá počet souborů v aktuálním adresáři a všech podadresářích
find / -name "smtpd.key"
free # zobrazí stav pamětí v systému (i swap)
git clone <adresa>
git add <file>
git commit -am "<description>"
git push <repo> <master>
git status
gnome-shell --version
grep -l -R "text" /var/log/ # hledá a vypíše seznam souborů, obsahující "text"
hostname # název hostitelského systému
htop # monitor systému
htpasswd -c -B htpasswd.txt user # (systém se zeptá na heslo a vytvoří soubor)
iptables -L
iptables -L -n # výpis aktuálních pravidel firewallu v numerickém formátu
ln original odkaz # symlink - pevný odkaz
ln -s original odkaz # symbolický odkaz
ln -s /usr/share/munin/plugins/ping_ping_google.com ping_na_Google
ls # výpis obsahu adresáře
ls -a # výpis včetně skrytých souborů
ls -l # dlouhý formát výpisu (vypíše, kam vede symlink)
ls -la # dlouhý formát výpisu včetně skrytých souborů
lsb_release -a # výpis verze Ubuntu
lshw # výpis hardware
lshw -html # výpis hardware v html
lspci # výpis čipů a karet připojených k základní desce
lsusb # výpis zařízení připojených do portu USB
mailq #Postfix - vypíše e-mailovou frontu (jako postqueue -p)
mc # Midnight Commander
md5sum ubuntu-17.10.1-desktop-amd64.iso // pro ověření integrity po přenášení souboru
mkdir -p # vytvoří adresář (ignoruje existující)
mkdir -p podadresar1/podadresar2 # vytvoří více podadresářů z aktuálního umístění
mkdir -p root-ca/{conf,private,public}
mv # přejmenovává a přesouvá soubory a adresáře
mv staryNazev novyNazev # pokud novyNazev již existuje, přepíše se!
mv soubor1 soubor2 /usr/bin # přesune soubory do /usr/bin
mysql -u root -p # přihlášení do databáze
mysqladmin -u root -p'stareheslo' password 'noveheslo' # změna root hesla MySQL
nano /etc/ssh/sshd_config
nano +100 /file # otevře soubor s kurzorem na stém řádku souboru file
nano +100,5 /file # otevře soubor s kurzorem na stém řádku a pátém sloupci
nano -c # spustí se se zobrazováním polohy kurzoru
netstat --route
netstat --tcp --numeric # výpis aktivních TCP spojení
netstat --tcp --listening --programs
netstat --statistics --raw
openssl version ## verze openssl
passwd # změna hesla (uživatel sám sobě)
sudo passwd <uživatel> # správce někomu jinému
php -m # vypíše seznam modulů obsažených v PHP
php -m |grep ssh2 # vypíše, jestli moduly obsahují modul ssh2
php -v # vypíše verzi PHP
postconf mail_version # verze Postfix
postsuper -d ALL # Postfix - vymaže e-mailovou frontu
postqueue -p # Postfix - vypíše e-mailovou frontu (jako mailq)
poweroff # vypne počítač
pwd # vypíše absolutní cestu do adresáře
reboot # restart
route -n
rkhunter --propupd # spustit po aktualizacích (jinak falešně pozitivní výsledky)
rkhunter -c # provede prověření systému
rkhunter --update # aktualizace
rm # maže soubory
rm -r folderName # smaže neprázdný adresář
rmdir # maže adresáře
sass --watch a.scss:a.css --style compressed
scp -rC franta@192.168.1.103:/home/franta/fotky ./fotky #kopírování souborů ze vzdálené mašiny (-r rekurzivní, tj. včetně podadresářů, -C zapíná kompresi při přenosu)
service apache2 restart
service dovecot restart
service fail2ban restart
service postfix restart
service pure-ftpd-mysql restart
service ssh restart
sha512sum incubating-netbeans-11.0-bin.zip // pro ověření integrity po přenášení souboru
sleep 8h && vlc alarm.mp3 # jednoduchý budík
split -n 4 xxx.mkv # rozdělí soubor xxx.mkv na 2 menší (viz. příkaz cat)
ssh uzivatel@nekde.dalelo.tld # vzdálené přihlášení
ssh-keygen -lf ~/.ssh/id_rsa.pub # zjištění otisku (fingerprint) veřejného klíče
# dále dostupné
ssh-keygen -E md5 -lf ~/.ssh/id_rsa.pub # md5 fingerprint
ssh-keygen -E sha1 -lf ~/.ssh/id_rsa.pub # sha1 fingerprint
ssh-keygen -f "/home/user/.ssh/known_hosts" -R 23.75.345.200 # remove key
ssh-keygen -t rsa -C "$your_email" # vytvoří pár klíčů typu rsa
sudo apt-cache search php7-* # vyhledání dostupných modulů pro PHP 7
sudo apt-get install --reinstall gnome-control-center # reinstalace Nastavení
sudo nano +166,23 /etc/apache2/apache2.conf -c # AllowOverride All - zapnutí rewrite na Apache2
sudo rm -r /path/to/folderName ## smaže folderName s právy roota včetně obsahu
sudo apt install dconf-editor # spustit a vyhledat "seconds" a zapnout: Zda by měly hodiny zobrazovat sekundy
sudo apt install default-jdk (pro Netbeans)
sudo apt install ruby-sass
sudo apt install flashplugin-installer -y # test: http://isflashinstalled.com/
sudo apt --purge remove ruby-sass # uninstall
sudo youtube-dl -U # update
sudo su
sudo swapon -s # Display swap usage summary by device. (viz free)
systemctl restart apache2
systemctl status apache2.service
systemctl status mariadb.service
tail /var/log/apache2/other_vhosts_access.log
tar -cjf archiv.tar.bz2 /cesta_co_archivovat/* # archivace s komprimací bzip2
tar -xjf archiv.tar.bz2 # extrahování tar s bzip2
tasksel # základní výběr balíčků
top
touch # vytvoří soubor (change file timestamps)
touch /forcefsck # vynutí jednorázovou kontrolu disku po restartu
tune2fs -c 1 /dev/sda1 # nastaví kontrolu disku po každém restartu
ufw disable # zastavení firewallu
ufw enable # zapnutí firewallu
ufw status verbose # výpis pravidel
uname -a # výpis systémových informací
uname -r # výpis verze aktuálního linuxového jádra
update.sh
users # výpis přihlášených uživatelů