10 kleine Helferlein
Neue Liste: https://github.com/eumel8/10-kleine-helferlein/blob/main/README.md
Manche Shell-Einzeiler braucht man irgendwie immer wieder, egal in welche Tastatur man seine Finger steckt. Es wird Zeit, diese kleinen Helferlein mal aufzulisten.
Bash
Finde alle Dateien in einem Verzeichnis und kopiere sie in ein anderes Verzeichnis. Alle Dateieigenschaften bleiben erhalten.
Code
find . -depth | cpio -pvdm /new_data |
Ersetze einen String durch einen anderen in einer Datei (hier Zeilenendezeichen \r)
Code
perl -p -i -e 's/\r//g' datei |
Dekodiere einen base64-String in einer Datei
Code
perl -MMIME::Base64 -0777 -ne 'print decode_base64($_)' datei |
Fuehre nacheinander auf vielen Rechnern ein Kommando aus (z.B. "date")
Code
for i in 51 52 53 61 62 63; do ssh root@192.168.0.$i "hostname; date";done |
Meine Loop-Devices sind alle.
Shell
#!/bin/bash | |
for i in {8..30}; | |
do | |
/bin/mknod -m640 /dev/loop$i b 7 $i | |
/bin/chown root:disk /dev/loop$i | |
done |
rpm/deb cheats:
Shell
Zu welchem Paket gehoert eine Datei: | |
| |
# rpm -qif /path/to/file | |
# dpkg -S /path/to/file | |
| |
Welche Dateien sind in einem installierten Paket: | |
# rpm -qil paket-name | |
# dpk -L paket-name | |
| |
Abhaengigkeiten eines Pakets pruefen: | |
# rpm -qpR ./paket.rpm | |
# dpkg -I ./paket.deb | |
| |
Abhaengigkeiten eines installierten Pakets pruefen: | |
# rpm -qR paket-name | |
# apt-cache depends |
Text aus Zwischenablage in vi einfuegen:
Manchmal gibt es haessliche Zeilenverschiebungen. Dagegen hilft ein
Shell
:set paste |
bash script debug mit Zeilennummer
Shell
PS4='Line ${LINENO}: ' bash -x script |
MySQL
Lege einen User an, vergebe ein Passwort und bestimmte Rechte
Code
GRANT File, Process,suprt,replication client,select on *.* TO 'depl_mon'@'192.168.0.100' identified by 'poddfsdkfskflpr934r1'; |
Widerufe die Rechte fuer einen Datenbankuser
Code
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'hans'@'192.168.100.%' |
Replikation mit SQL-Shell einrichten
Code
mysql> | |
CHANGE MASTER TO | |
MASTER_HOST='master2.mycompany.com', | |
MASTER_USER='replication', | |
MASTER_PASSWORD='bigs3cret', | |
MASTER_PORT=3306, | |
MASTER_LOG_FILE='master2-bin.001', | |
MASTER_LOG_POS=4, | |
MASTER_CONNECT_RETRY=10; |
MySQL-Replikation: Ueberspringe einen Fehlercounter (z.B. "Duplicate entry")
Code
mysql> slave stop; set global sql_slave_skip_counter=1; slave start ; show slave status\G |
Query-log einschalten:
Shell
mysql> show global variables like '%general%'; | |
+------------------+------------+ | |
| Variable_name | Value | | |
+------------------+------------+ | |
| general_log | OFF | | |
| general_log_file | mysqld.log | | |
+------------------+------------+ | |
| |
mysql> set global general_log = 1; |
Dump MySQL Datenbank
Shell
mysqldump --master-data --all-databases > /tmp/mysql.sql |
MySQl too many connection:
Shell
mysql> select @@max_connections; | |
| |
+-------------------+ | |
| @@max_connections | | |
+-------------------+ | |
| 151 | | |
+-------------------+ | |
1 row in set (0.00 sec) | |
| |
mysql> set global max_connections = 500; |
Anzahl Einttraege pro Tabelle anzeigen:
Shell
mysql> SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'my_schema' order by table_rows; |
Git
Git: Eine Datei in 2 Branches vergleichen:
Shell
git diff reference live -- modules/deploy/manifests/init.pp |
Git: Eine Datei aus einem anderen Branch in den aktuellen kopieren:
Shell
git checkout reference -- modules/deploy/manifests/init.pp |
lokales git repo mit remote git repo syncen:
Shell
git remote add mygithub https://github.com/eumel8/ansible-otc | |
git pull mygithub master | |
git push |
OpenSSL
Openssl: SSL-Zertifikat anlegen (fuer apache, postfix usw.)
Code
openssl req -new -x509 -days 730 -nodes -out hostname1.pem -keyout hostname1.pem |
SSL-Zertifkat angucken:
Shell
openssl x509 -in eumelnetde.pem -noout -text |
Überprüfen, ob ein SSL-Zertifikat zum Key passt:
Shell
openssl x509 -noout -modulus -in server.crt| openssl md5 | |
openssl rsa -noout -modulus -in server.key| openssl md5 | |
| |
die checksum sollte gleich sein |
Docker
Loesche alle Docker Container
Shell
for i in `docker ps --all |awk '{print $1}'`;do docker rm --force $i;done |
Loesche alle Docker Images
Shell
for i in `docker images |awk '{print $3}'`;do docker image rm $i;done |
OpenStack
unbenutze volumes loeschen
Shell
for i in `openstack volume list --status available -f value| awk '{print $1}'`;do openstack volume delete $i;done |
bestimte Sorte VMs loeschen
Shell
for i in `openstack server list | grep k8s-00 | grep ranchermaster | awk '{print $2}'`;do openstack server delete $i;done |
Dies & Das
Virtuelle Konsole aufrufen mit virt-viewer
Code
virt-viewer -c qemu+ssh://root@192.168.0.101/system test |
ZFS set automatic mountpoints (lxd story)
Shell
zfs get mountpoint lxd00/containers/dns | |
zfs set mountpoint=/var/lib/lxd/containers/dns.zfs lxd00/containers/dns | |
zfs mount lxd00/containers/jump | |
cd /var/lib/lxd/containers | |
ln -s /var/lib/lxd/containers/dns.zfs dns | |
| |
used by rollback lxd 2.2 to 2.0 |
test smtp connection with curl
Shell
curl -v smtp://out-cloud.mms.t-systems-service.com:25 --mail-from noreply@raseed.external.otc.telekomcloud.com --mail-rcpt f.kloeker@t-online.de --upload-file /etc/os-release |
2 Kommentare
Kommentar von: Eumel Besucher

Kommentar von: Eumel Besucher

Welche Rechte habe ich in Windows hinterlegt:
Shell
rundll32.exe keymgr.dll KRShowKeyMgr |
Zeige Anzahl Eintraege aller MySQL-Tabellen in einem Schema:
SELECT TABLE_ROWS,TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = “mydb”