Tips and Tricks: Difference between revisions

From Q
Jump to navigation Jump to search
No edit summary
Tgurr (talk | contribs)
No edit summary
 
(53 intermediate revisions by 2 users not shown)
Line 1: Line 1:
== Paketverwaltung ==
== Useful commands ==
=== Recursively set directory permissions to 755 ===


=== Zu welchem Paket gehört Datei X ===
{{Root|<nowiki>find /var/www/path -type d -print0 | xargs -0 chmod -c 755</nowiki>}}
{{Codeline|# equery belongs -f <dateiname>}}


=== Welche Pakete haben USE-Flag X ===
=== Recursively rename directory and files from ISO-8859-15 to UTF-8 ===
{{Codeline|# equery hasuse <useflag>}}


=== Backup von installiertem Paket anlegen ===
{{Command|<nowiki>convmv -f iso-8859-15 -t utf8 -r /var/www/path --preserve-mtimes --notest</nowiki>}}
{{Codeline|# quickpkg net-www/apache}}


Danach kann man das Paket auf einem anderen Rechner installieren oder schnell downgraden, wenn bei einem Update etwas schief gelaufen ist. Die Datei befindet sich dann in {{Filename|/usr/portage/packages/All}} bzw. ein Symlink auf die Datei in {{Filename|/usr/portage/packages/net-www}}. Zur Installation:
=== Recursively search for files of a specitic type, e.g. documents and list them ===


{{Codeline|# emerge --usepkgonly "<net-www/apache-2.2.4"}}
{{Command|<nowiki>find . -regex '.*\(pdf\|doc\)'</nowiki>}}


=== Überflüssige Pakete erkennen und entfernen ===
=== User: Change a users home directory ===
{{Codeline|# emerge depclean --pretend}}


=== Profil wechseln / auf neue Version updaten ===
{{Root|usermod -d /home/newhome user}}
{{Codeline|# emerge eselect}}


{{Codeline|# eselect profile list}}
=== Strip comments from config file ===


{{Codeline|# eselect profile set <nummer>}}
{{Command|<nowiki>grep -v "#" file.conf</nowiki>}}


== SCP Dateitransfer ==
=== rsync file transfer ===
Datenaustausch zwischen zwei Rechnern über Kommandozeile.
Synchronise a directory or whole partition:
{{Root|<nowiki>rsync -av --delete-before /run/media/user/4TB-WD/ /run/media/user/4TB-WD-BCK/ --exclude="/lost+found/" --dry-run</nowiki>}}


Datei hochladen:<br />
Upload a file to a remote server via rsync over ssh:
{{Codeline|# scp /root/htdocsbackup.tar.bz2 root@entfernter-server.de:/root/}}<br />
{{Root|rsync --partial --progress movie.mkv root@example.com:/var/www/subdomain.example.com/htdocs/movies/movie.mkv}}
Datei runterladen:<br />
{{Codeline|# scp root@entfernter-server.de:/root/htdocsbackup.tar.bz2 /root/htdocsbackup.tar.bz2}}


== SSH Tunnel ==
=== SCP file transfer ===
Ist auf dem Server nur der SSH Port offen aber man möchte sich z.B. auf den auf Port 8080 laufenden Tomcat Webserver verbinden so kann man das über einen SSH Tunnel machen.
File transfer via commandline.


{{Codeline|# ssh -N -i /home/benutzer/.ssh/id_dsa -L 7777:webserver:8080 root@webserver}}
Upload file:


Anschließend kann man den Tomcat unter localhost:7777 erreichen.
{{Root|scp /root/htdocsbackup.tar.bz2 root@remote-host.de:/root/}}
Download file:


== Yakuake DCOP-Skripte ==
{{Root|scp root@remote-host.de:/root/htdocsbackup.tar.bz2 /root/htdocsbackup.tar.bz2}}
=== MultiSSH ===
Per SSH auf mehrere Hosts verbinden, dafür jeweils ein neues Yakuake Tab anlegen und entsprechend benennen.
{{Box File|multissh.sh|
<pre source"bash">
#!/bin/bash


[[ -n "$1" && -n "$2" ]] || {
Upload directory:
    echo "Usage: ./multissh.sh \"user\" \"server1 server2\""
    echo " z.B.: ./multissh.sh \"root\" \"server1 server2\""; exit 0 ; }


lastid=`dcop yakuake DCOPInterface sessionIdList | awk -F, '{print $NF}'`
{{Root|scp -p -r /root/directory root@remote-host.de:/root}}
Download directory:


for i in $2 ; do
{{Root|scp -p -r root@remote-host.de:/root/directory /root}}
        dcop yakuake DCOPInterface slotAddSession
        let "lastid += 1"
        dcop yakuake DCOPInterface slotRenameSession $lastid $i
        dcop yakuake DCOPInterface slotRunCommandInSession $lastid "ssh $1@$i"
done


exit 0
=== SSH tunnel ===
Very useful if the server you want to connect to has only the SSH port open and/or a firewall infront and you want to access for example a tomcat server running on port 8080.
 
{{Root|ssh -N -i /home/<user>/.ssh/id_dsa -L 7777:remote-host.de:8080 root@remote-host.de}}
 
After establishing the tunnel you can access the tomcat server of the remote machine port 8080 at your localhost port 7777.
 
=== Generate SSH Host Keys ===
 
{{Root|ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''}}
{{Root|ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''}}
{{Root|ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''}}
 
=== SSL: Remove passphrase from a SSL key ===
 
{{Command|openssl rsa -in ssl_with_passphrase.key -out ssl_without_passphrase.key}}
 
=== SSL: Add/change passphrase to/from a SSL key ===
 
{{Command|openssl rsa -in ssl_without_passphrase.key -out ssl_with_passphrase.key -des3}}
 
=== Perl: List included perl core modules with their versions ===
 
{{Command|corelist -v 5.22.1}}
 
=== Postfix: Show mailqueue ===
 
{{Root|mailq}}
 
=== Postfix: Attempt to deliver all queued mail ===
 
{{Root|postqueue -f}}
 
=== Postfix: Delete a single mail from queue ===
 
{{Root|postsuper -d id_of_mail}}
 
=== Postfix: Delete all mails with a specific sender from queue ===
 
{{Root|<nowiki>mailq | tail -n +2 | awk 'BEGIN { RS = "" } / apache@example\.com$/ { print $1 } ' | tr -d '*!' | postsuper -d -</nowiki>}}
 
=== ImageMagick: Combine images side by side ===
 
{{Command|convert image{1,2,3}.png +append output.png}}
 
=== Safely spin down external USB drive AFTER unmounting using sg3_utils ===
 
{{Root|sg_start --readonly --stop /dev/sdX}}
 
=== Delete content in the underlying directory of a mounted filesystem without having to unmount first ===
Bind mount root to a temporary mount point, e.g. /mnt/temp. Useful to fix. e.g. following systemd informational notice:
 
tmp.mount: Directory /tmp to mount over is not empty, mounting anyway.
 
{{Root|mount --bind / /mnt/temp}}
 
Browse to /mnt/temp/yourmountpoint and be able to delete the files, afterwards unmount /mnt/temp again.
 
=== eyeD3: Remove a specific ID3 tag frame ===
 
{{Command|<nowiki>eyeD3 file.mp3 --remove-frame=TPE2</nowiki>}}
 
=== Ghostscript: Split a PDF file in single files per page using a python script ===
<pre>
#!/usr/bin/python3
 
import os
 
number_of_pages = 10
input_pdf = "file.pdf"
 
for i in range(1, number_of_pages +1):
    os.system("gs -q -dBATCH -dNOPAUSE -sOutputFile=page{page:04d}.pdf -dFirstPage={page} -dLastPage={page} -sDEVICE=pdfwrite {input_pdf}".format(page=i, input_pdf=input_pdf) )
</pre>
</pre>
}}


=== MultiCommand ===
=== Ghostscript: Merge multiple PDF files ===
Ein Kommando in mehreren Yakuake Tabs ausführen.
 
{{Box File|multicommand.sh|
{{Command|<nowiki>gs -dBATCH -dNOPAUSE -dQUIET -sDEVICE=pdfwrite -sOutputFile=merged.pdf file1.pdf file2.pdf file3.pdf</nowiki>}}
<pre source"bash">
 
#!/bin/bash
Alternativly use poppler (which removes metadata)
 
{{Command|pdfunite file1.pdf file2.pdf file3.pdf merged.pdf}}
 
=== Change the Dolphin standard view to detailed view for ALL folders ====
Open Dolphin -> Settings > Configure Dolphin -> Views -> Common Tab -> and mark -> Use the same view for all folders
 
=== Disable IPv6 until the next reboot ===
{{Root|echo 1 > /proc/sys/net/ipv6/conf/<iface>/disable_ipv6}}


[[ -n "$1" && -n "$2" ]] || {
=== Stream a video via VLC to Chromecast ===
    echo "Usage: ./multicommand.sh \"tabname1 tabname2\" \"kommando\""
{{Command|<nowiki>vlc --sout="#chromecast{ip=xxx.xxx.xxx.xxx}" ~/video.mkv</nowiki>}}
    echo " z.B.: ./multicommand.sh \"server1 server2\" \"emerge --sync\""; exit 0 ; }


ids=`dcop yakuake DCOPInterface sessionIdList | sed 's/,/ /g'`
=== Summary of the top 15 directories occupying the most hard disc space ===
{{Command|<nowiki>du -cksh * | sort -hr | head -n 15</nowiki>}}


for i in $ids ; do
== Package management (Portage) ==
        sessionname=`dcop yakuake DCOPInterface slotSessionName $i`


        for x in $* ; do
=== To which package belongs file X ===
                if [ "$sessionname" = "$x" ] ; then
{{Root|equery belongs -f <dateiname>}}
                        dcop yakuake DCOPInterface slotRunCommandInSession $i "$2"
                fi
        done
done


exit 0
=== Which installed packages have USE-Flag X ===
</pre>
{{Root|equery hasuse <useflag>}}
}}
 
=== Backup an installed package ===
{{Root|quickpkg net-www/apache}}
 
After this you can install the package on another machine or do a fast downgrade if something went bad after an update. You can find the file under {{Path|/usr/portage/packages/All}} and in this example a symlink to the apache file in {{Path|/usr/portage/packages/net-www}}. To install the now precompiled binary use:
 
{{Root|emerge --usepkgonly "<net-www/apache-2.2.4"}}
 
=== Detect and get rid of leftover packages ===
{{Root|emerge depclean --pretend}}
 
=== Change your current profile ===
{{Root|emerge eselect}}
 
{{Root|eselect profile list}}


{{Root|eselect profile set <nummer>}}


[[Kategorie:Software]]
[[Category:Software]]

Latest revision as of 16:53, 22 February 2017

Useful commands

Recursively set directory permissions to 755

# find /var/www/path -type d -print0 | xargs -0 chmod -c 755

Recursively rename directory and files from ISO-8859-15 to UTF-8

$ convmv -f iso-8859-15 -t utf8 -r /var/www/path --preserve-mtimes --notest

Recursively search for files of a specitic type, e.g. documents and list them

$ find . -regex '.*\(pdf\|doc\)'

User: Change a users home directory

# usermod -d /home/newhome user

Strip comments from config file

$ grep -v "#" file.conf

rsync file transfer

Synchronise a directory or whole partition:

# rsync -av --delete-before /run/media/user/4TB-WD/ /run/media/user/4TB-WD-BCK/ --exclude="/lost+found/" --dry-run

Upload a file to a remote server via rsync over ssh:

# rsync --partial --progress movie.mkv root@example.com:/var/www/subdomain.example.com/htdocs/movies/movie.mkv

SCP file transfer

File transfer via commandline.

Upload file:

# scp /root/htdocsbackup.tar.bz2 root@remote-host.de:/root/

Download file:

# scp root@remote-host.de:/root/htdocsbackup.tar.bz2 /root/htdocsbackup.tar.bz2

Upload directory:

# scp -p -r /root/directory root@remote-host.de:/root

Download directory:

# scp -p -r root@remote-host.de:/root/directory /root

SSH tunnel

Very useful if the server you want to connect to has only the SSH port open and/or a firewall infront and you want to access for example a tomcat server running on port 8080.

# ssh -N -i /home/<user>/.ssh/id_dsa -L 7777:remote-host.de:8080 root@remote-host.de

After establishing the tunnel you can access the tomcat server of the remote machine port 8080 at your localhost port 7777.

Generate SSH Host Keys

# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N
# ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N

SSL: Remove passphrase from a SSL key

$ openssl rsa -in ssl_with_passphrase.key -out ssl_without_passphrase.key

SSL: Add/change passphrase to/from a SSL key

$ openssl rsa -in ssl_without_passphrase.key -out ssl_with_passphrase.key -des3

Perl: List included perl core modules with their versions

$ corelist -v 5.22.1

Postfix: Show mailqueue

# mailq

Postfix: Attempt to deliver all queued mail

# postqueue -f

Postfix: Delete a single mail from queue

# postsuper -d id_of_mail

Postfix: Delete all mails with a specific sender from queue

# mailq | tail -n +2 | awk 'BEGIN { RS = "" } / apache@example\.com$/ { print $1 } ' | tr -d '*!' | postsuper -d -

ImageMagick: Combine images side by side

$ convert image{1,2,3}.png +append output.png

Safely spin down external USB drive AFTER unmounting using sg3_utils

# sg_start --readonly --stop /dev/sdX

Delete content in the underlying directory of a mounted filesystem without having to unmount first

Bind mount root to a temporary mount point, e.g. /mnt/temp. Useful to fix. e.g. following systemd informational notice:

tmp.mount: Directory /tmp to mount over is not empty, mounting anyway.

# mount --bind / /mnt/temp

Browse to /mnt/temp/yourmountpoint and be able to delete the files, afterwards unmount /mnt/temp again.

eyeD3: Remove a specific ID3 tag frame

$ eyeD3 file.mp3 --remove-frame=TPE2

Ghostscript: Split a PDF file in single files per page using a python script

#!/usr/bin/python3

import os

number_of_pages = 10
input_pdf = "file.pdf"

for i in range(1, number_of_pages +1):
    os.system("gs -q -dBATCH -dNOPAUSE -sOutputFile=page{page:04d}.pdf -dFirstPage={page} -dLastPage={page} -sDEVICE=pdfwrite {input_pdf}".format(page=i, input_pdf=input_pdf) )

Ghostscript: Merge multiple PDF files

$ gs -dBATCH -dNOPAUSE -dQUIET -sDEVICE=pdfwrite -sOutputFile=merged.pdf file1.pdf file2.pdf file3.pdf

Alternativly use poppler (which removes metadata)

$ pdfunite file1.pdf file2.pdf file3.pdf merged.pdf

Change the Dolphin standard view to detailed view for ALL folders =

Open Dolphin -> Settings > Configure Dolphin -> Views -> Common Tab -> and mark -> Use the same view for all folders

Disable IPv6 until the next reboot

# echo 1 > /proc/sys/net/ipv6/conf/<iface>/disable_ipv6

Stream a video via VLC to Chromecast

$ vlc --sout="#chromecast{ip=xxx.xxx.xxx.xxx}" ~/video.mkv

Summary of the top 15 directories occupying the most hard disc space

$ du -cksh * | sort -hr | head -n 15

Package management (Portage)

To which package belongs file X

# equery belongs -f <dateiname>

Which installed packages have USE-Flag X

# equery hasuse <useflag>

Backup an installed package

# quickpkg net-www/apache

After this you can install the package on another machine or do a fast downgrade if something went bad after an update. You can find the file under /usr/portage/packages/All and in this example a symlink to the apache file in /usr/portage/packages/net-www. To install the now precompiled binary use:

# emerge --usepkgonly "<net-www/apache-2.2.4"

Detect and get rid of leftover packages

# emerge depclean --pretend

Change your current profile

# emerge eselect
# eselect profile list
# eselect profile set <nummer>