Und auch eher selten möchte ich einen alternativen Vorschlag für etwas vergleichbares aus dem Internet: Dann würde ich den Webbrowser für eine Suchmaschine öffnen.
Montag, 29. März 2021
Windows 10 - Websuche im Startmenü deaktivieren
Und auch eher selten möchte ich einen alternativen Vorschlag für etwas vergleichbares aus dem Internet: Dann würde ich den Webbrowser für eine Suchmaschine öffnen.
Samstag, 27. März 2021
Linux-Quiz:
Datenkanäle auf der Bash-Shell
Auf der Arbeit nervte ein Cronjob und löste immer wieder Fehler-Mails aus. "Kein Ding."
crontab -e ... "Alles klar, da fehlt was."
Am nächsten Tag: Wieder eMails.
crontab -e ... Hmh... "Wieso...?!" ...und eine Nacht überlegen...
Autsch! Gemein! KLAR! DER ist guuuuuut! :-)
crontab -e ...."Jetzt aber!"
Ruhe.
Wer also einem Linux-Admin einmal eine wirklich gemeine Alltagsfrage stellen möchte, für den habe ich da was:
Was davon ist richtig - und vor allem: Warum?find /does/not/exist -name foo -exec bar {}\; -print 2>&1 >/dev/null find /does/not/exist -name foo -exec bar {}\; >/dev/null 2>&1 find /does/not/exist -name foo -exec bar {}\; -print &>/dev/null
Nicht googeln - nicht ausprobieren - versucht's mal aus dem Stehgreif zu beantworten. :-)
Samstag, 27. Februar 2021
Windows und die "erleichterte Bedienung" der Maus.
Die Maus hob jedes Fenster beim herüberstreichen in den aktiven Focus und alles an Fenstern "klebte" förmlich an der Maus.
Der Besitzer hatte wohl unter "Systemsteuerung\Erleichterte Bedienung\Center für erleichterte Bedienung\Verwenden der Maus erleichtern" den Haken "Ein Fenster durch Zeigen mit der Maus aktivieren" gefunden -
und zusätzlich noch auf Grund einer "Profi-Empfehlung" ein "exklusives" Konfigurationstool benutzt, das man lieber gleich hätte in das NULL-Device Schieb-en können...
Dieser MouseOver-Effekt ("Focus Follows Mouse") bzw. Fenster allein durch das Überfahren mit dem Mauszeiger zu aktivieren kann sicherlich für Menschen mit Behinderungen in der Hand-Motorik bzw. der Hand-Augen-Koordination eine erleichterte Bedienung sein ---
Wenn ich jedoch als "Tekkie" nicht einmal mehr von links nach rechts eine Datei ziehen kann, ohne dass mir alle dazwischen liegenden Fenster hin und her switchen und ich nach loslassen meiner Maustaste mein altes "Quell"-Fenster verzweifelt suchen muss, wird es einfach nervig und das Gerät ist nicht mehr sinnvoll bedienbar: So kann man einfach nicht helfen.
Also mache ich das ganze "mal eben" wieder rückgängig... "Haken raus und gut, ne?"
....aber klaaaaar doch....! :-)
Natürlich war es nicht so einfach... denn das "ProfiTool" hatte volle Arbeit geleistet und irgendwo in der Registry Einstellungen gesetzt, die nicht mehr zu retten waren.
Mit ziemlichem "Gefummel" konnte ich das Problem mit "Regedit" in der Registry ungefähr in "Computer\HKEY_CURRENT_USER\Control Panel\Desktop" einkreisen.
Also eine Text-Datei als "NoMouseOver.reg" mit folgendem Textinhalt erstellen und doppelt anklicken:
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Control Panel\Desktop] "CaretWidth"=dword:00000001 "ClickLockTime"=dword:000004b0 "MouseWheelRouting"=dword:00000002 "UserPreferencesMask"=hex:9e,1e,07,80,12,00,00,00 "Pattern"=- "AutoColorization"=- "ImageColor"=- "WaitToKillAppTimeout"=- "LockScreenAutoLockActive"=- "EnablePerProcessSystemDPI"=- "LogPixels"=- "ScreenSaverIsSecure"=- "ScreenSaveTimeOut"=-
Wenn das nicht klappen sollte, erinnere man sich daran, dass die Schlüssel im Bereich "HKEY_CURRENT_USER" stehen: Es handelt sich dabei um Einstellungen des Users.
Man erstellt im Schlimstfalle also einfach an dem PC ein neues Dummy-Benutzerkonto, logged sich dort ein und exportiert dort einen "frischen" Schlüsselbaum aus der Registry des dann angemeldeten Benutzer.
Das mag eine Holzhammermethode sein, aber wird aber im Zweifelsfalle ganz sicherlich funktionieren.
P.S.: Für die Benutzer mit englischem Windows:
Die Einstellungen für das MouseOver befinden sich unter "ControlPanel\Ease of Access\Ease of Access Center\Make the Mouse easier to Use" und der Haken heisst hier "Activate a window by hovering over it with the mouse"
Edit: Nach einem kurzen Testlauf konnte ich feststellen, dass es reicht den Wert
mit Regedit wie angegeben zu ändern.[HKEY_CURRENT_USER\Control Panel\Desktop] "UserPreferencesMask"=hex:9e,1e,07,80,12,00,00,00
Montag, 22. Februar 2021
DDNS: DHCPd und die Journal-Files (.jnl)
Nach einiger Zeit sieht das nicht nur ziemlich unschön aus, man kann auch aus den Zonefiles nicht mehr die "aktuelle Realität" ablesen -
und die Journal-Files sind für das menschliche Auge nicht ohne weiteres sprechend.
Bereits im März 2019 hatte ich mich mal wieder damit befasst und hatte ein paar Zeilen geschrieben.
einzufrieren bzw. freizugeben. Das klappt jedoch auch nicht immer so ganz und persönlich fand ich das immer unschön, weil es nicht das "Problem" an der Wurzel packt - dem Synchronisieren der Files.rndc freeze rndc thaw
Eher zufällig bin ich heute durch das Manual gestolpert und habe da eine definitiv schönere Lösung gefunden:
Das ganze als Cronjob auf 30 Minuten - und schon ist das Arbeiten wieder etwas einfacher.rndc sync -clean
Man lernt nicht aus...! Schön! :-)*/30 * * * * rndc sync -clean
Sonntag, 21. Februar 2021
DNS und Root-Adressen updaten
Sonntags um 03:00 Uhr - das eigene Monitoring klingelt:
Internet gibt es nur noch so halb und alles alles an Maschinerie benimmt sich sehr sehr eigenartig.
5 Minuten später ist das Problem erkannt:
Der hauseigene mini-DNSrelay hat versagt und ich schwenke erst einmal voll um auf die Fritzbox bzw. Telekom. Doch was war passiert?
Aus unerklärlichen Gründen hatte sich beim Update der DNS-Rootserer-Einträge die /var/named/named.ca "aufgelöst" und somit konnten keine DNS-Rootserver mehr gefunden werden; was natürlich die entsprechenden Folgen hatte.
Hrm....
Also - ein neues Update-Script für die Ermittlung der DNS-Rootserver....! :-)
Update: 2022-01-16 Typo in der Dateiausleitung nach /dev/null in der wget-zeile.#!/bin/bash # # update-dns-roots # Script zum Aktualisieren der DNS-Root-Adressen # # 2021-02-21 Oliver Lenz # # contab -> # 0 10 1 * * /root/bin/update-dns-roots.bash >/dev/null 2>&1 || echo "Probleme in update-dns-roots.bash" # PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin destination="69.58.179.79" # ftp.rs.internic.net dt=$(date "+%Y%m%d%H%M%S") filter="FILTER:$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)" errorlevel=255 echo "Setup Firewall for ftp-Communication with ${destination}" modprobe ip_conntrack modprobe ip_conntrack_ftp iptables -A OUTPUT -p tcp --sport 1024:65535 -d ${destination} --dport 20 -m state --state ESTABLISHED -j ACCEPT -m comment --comment "${filter}" iptables -A OUTPUT -p tcp -m tcp --sport 1024:65535 -d ${destination} --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT -m comment --comment "${filter}" iptables -A OUTPUT -p tcp --sport 1024:65535 -d ${destination} --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT -m comment --comment "${filter}" iptables -A INPUT -p tcp -s ${destination} --sport 20 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT -m comment --comment "${filter}" iptables -A INPUT -p tcp -m tcp -m multiport -s ${destination} --sports 21,1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT -m comment --comment "${filter}" echo "Getting ca-File from ${destination}" wget -q --timeout=4 --tries=3 --waitretry=2 --user=ftp --password=ftp ftp://69.58.179.79/domain/db.cache -O /var/named/named.ca.tmp &>/dev/null if [ "$?" == "0" ]; then if cmp -s /var/named/named.ca /var/named/named.ca.tmp; then echo "No changes." rm -f /var/named/named.ca.tmp else cp -f /var/named/named.ca /var/named/named.ca.${dt} mv -f /var/named/named.ca.tmp /var/named/named.ca /usr/bin/systemctl restart named-chroot.service echo "Update ca-file successfully." fi errorlevel=0 else echo "Problems getting new ca-file via /root/bin/update-dns-roots.bash" errorlevel=1 fi echo "Remove Firewall-Rules for ftp-Communication with ${destination}." while read rule; do echo "${rule}" | xargs iptables done< <( iptables-save | grep " --comment \"${filter}\"" | sed "s/-A /-D /g" ) exit ${errorlevel}
Dienstag, 2. Februar 2021
Windows 10 und seine Updates:
Wenn hinter einem Proxy der Windows-Client unerklärlich "stirbt"
Der Taskmanager zeigte an, dass "Windows Update" 90% der CPU-Ressourcen verbrauchen würde -
und ein Blick auf den Netzwerkadapter zeigte ebenfalls, dass da was "im Busch" war:
Der Client versuchte ohne Rücksicht auf Verluste Netzwerkverbindungen zur Außenwelt aufzubauen.
Virenbefall? Hier hätte der Client zumindest ein wenig Probleme durch den authentifizierenden Proxy.
Also schaute ich in das Log des Proxies, wohin die Verbindungen gehen sollten und das Problem wurde sichtbar: Windows Update kann nicht mit authentifizierenden Proxies arbeiten!
Der Client versuchte gar tausende Anfragen nach Microsoft aufzubauen, die vom Proxy gedropped wurden; entsprechend wurden die Ressourcen des Gerätes verschwendet und der Client lief so im wahrsten Sinne des Wortes "heiß".
Und nun?
Pest oder Cholera?
Schalte ich den Update-Service des Clients ab,
oder schalte ich die Authentifizierung des Proxies ab?
Oder installiere ich nun extra einen WSUS-Server für das Update von einigen Windows-Clients....?
Das kann alles nicht die Lösung sein.
Mit einem gehörigen Knirschen habe ich folgende Zeilen in die Squid-Konfiguration eingetragen:
acl windowsupdates dstdom_regex -i (.*\.|)microsoft.com
http_access allow windowsupdates
Jetzt kann ein jeder hinaus auf ein Ziel bei Microsoft, ohne eine Authentifizierung.
......aber der Client läuft nun wieder schnell.... *hust*
Donnerstag, 28. Januar 2021
rpm-Pakete und Versionen
Einfache Benutzer können Root-Zugriff erlangen, sogar wenn diese Benutzer nicht einmal in der /etc/sudoers erwähnt sind. Auch Accounts ohne Shell bzw. lediglich hinterlegtem Kontext sind somit gefährlich.
"Also - mal eben schauen", wie "neu" das sudo auf der Maschine ist.
rpm -qi $( rpm -qf "/bin/sudo" )
Aber geht's noch schöner? Klar - etwas CommandLine-Zauber... :-)
f="/bin/sudo" ; rpm -qf "${f}" --qf '%{name} %{version}-%{release}%{arch} from '; env TZ=Europe/Berlin date -d "@$( rpm -qf "${f}" --qf '%{buildtime}' )" "+%Y-%m-%d %H:%M:%S %Z"
Nachtrag: %{buldtime:date} Zeigt bereits einen Datumsstring, welcher jedoch nicht wirklich ansehnlich ist.
Sonntag, 15. November 2020
BASH und JSON-Strings
Ein Erfahrungsbericht...
Das Problem war eigentlich, nur "mal eben" einen JSON-String ohne zusätzliche Tools "menschlich lesbar" anzuzeigen.
"Da muss doch schon mal wer was ordentliches gemacht haben?"
Nach ca. 2 Stunden suchen hatte ich jedoch immer noch nichts wirklich funktionierendes gefunden, was einen JSON-String "ordentlich" menschlich visualisiert -
oder auch ggf. aus einem JSON-String einen Variablen-Bereich einfach wieder heraus gibt.
Na dann... bau ich da mal halt selbst -
Auf geht's :-)
#!/bin/bash # # Funktionen zum Umgang mit JSON-Strings. # # 2020-11-13 Oliver Lenz Initial # function parse_jsonvar_raw() { # Parse einen JSON-String in menschlich lesbare form. # # $1 JSON-String # $2 Tabulatorenweite (default:4) (optional) # $3 Filtere die Ausgabe anhand eines Variablennamens (optional), z.B. "value.name" # local buchstabe="" letzter_buchstabe="" zeile="" local in_gaensefuesschen=0 umbruch="" local variablenname="" variablenstack=() local ebene=0 anschlag=0 local tabbreite=4 filter="" zurueck=0 if [ $# -gt 1 ]; then [[ "${2}" =~ (^[0-9]*$) ]] && tabbreite=$2 || filter=".${2}" fi [ $# -gt 2 ] && filter=".${3}" function vartest() { local voller_variablenname="" i=0 s [ -n "${variablenname}" ] && variablennamenstack[${ebene}]="${variablenname}" voller_variablenname="" for((i=0;i<=${ebene};i++)){ s="${variablennamenstack[$i]#\"}" s="${s%\"}" voller_variablenname="${voller_variablenname}.${s}" } # printf "%-60s" "${voller_variablenname}" if [[ -z "${filter}" || "${filter}" == "${voller_variablenname}" || "${voller_variablenname:0:$((${#filter}+1))}" == "${filter}." ]]; then [ "${filter}" == "${voller_variablenname}" ] && zurueck=$ebene # korrektur bei Filter (( i=$anschlag-$zurueck*tabbreite )) [ ${i} -gt 0 ] && printf "%${i}s" " " [ -n "${zeile}" ] && echo "${zeile}" fi variablenname="" zeile="" } while read -n1 buchstabe; do if [ "${in_gaensefuesschen}" == "1" ]; then [ "${letzter_buchstabe}" != "\\" ] && [ "${buchstabe}" == "\"" ] && in_gaensefuesschen="0" elif [ "${letzter_buchstabe}" != "\\" ] && [ "${buchstabe}" == "\"" ]; then in_gaensefuesschen="1" else case "${buchstabe}" in '{' | '[' | '(' | ',' ) umbruch="nach_buchstaben";; '}' | ']' | ')' ) umbruch="vor_buchstaben";; ':') variablenname="${zeile}";; ' ') buchstabe="";; esac fi [ "${umbruch}" == "vor_buchstaben" ] && vartest && (( ebene-- )) zeile="${zeile}${buchstabe}" [ "${umbruch}" == "vor_buchstaben" ] && (( anschlag=ebene*tabbreite )) if [ "${umbruch}" == "nach_buchstaben" ]; then vartest [ "${buchstabe}" != "," ] && (( ebene++ )) (( anschlag=ebene*tabbreite )) fi letzer_buchstabe="${buchstabe}" umbruch="" done<<<"${1}" [ -n "${zeile}" ] && vartest } function parse_jsonvar(){ ausgabe="$( parse_jsonvar_raw "${1}" "${2}" "${3}" )" [ -n "${ausgabe}" ] && echo "${ausgabe%,}" } # json_str='value:{"name":"Hello World","myNumArray":{"index0":"Hello","varname":"value","some":"thing"}}' # parse_jsonvar "${json_str}" # parse_jsonvar "${json_str}" 8 # parse_jsonvar "${json_str}" 4 "value" # parse_jsonvar "${json_str}" 4 "value.name" # parse_jsonvar "${json_str}" 4 "value.myNumArray"
Geht doch... :-)
Donnerstag, 12. November 2020
Arrays bzw. Stacks mit der BASH-Shell
Anbei eine Idee, wie man das Problem mit üblichen Funktionen wie
"push" (etwas auf den Stack legen),
"pop" (das letzte Element vom Stack zeigen und löschen),
"delete_from_stack" (ein gezieltes Element vom Stack löschen) und
"print_stack" (gebe einen Stack aus)
lösen kann.
Viel Spaß damit. :-)
Donnerstag, 8. Oktober 2020
BASH und die Zeitzone
Das Remote-System auf dem ich grade eingelogged bin, arbeitet z.B. in UTC.
$ date "+%c"
Wed Oct 7 23:26:47 UTC 2020
Da kann man als Europäer mal gar nichts mit anfangen.
Wie kommt man nun also an die Uhrzeit zu Hause?
Mittwoch, 23. September 2020
Monitoring mit Check_MK:
Wenn die Abfrage mal zu häufig kommt....
...oder auch: Die Magie von "date".
Wer mit einem Bash-Script einen Checkpunkt für ein Monitoring-System wie z.B. Check_MK schreibt, der kennt wahrscheinlich das Problem:
Manchmal übertreibt ein Monitoring-System und ruft seinen Check von Remote so oft auf, dass die Ressourcen des zu überwachenden Clients schlichtweg zu ausgelastet sind.
Das Monitoring hilft also nicht mehr, sondern bringt den zu überwachenden Client zu Fall.
Man kann jedoch die Ausgaben eines Scriptes sehr einfach (selbst) Cachen und sollte das auch selbst übernehmen, denn die Caching-Mechanismen solcher Monitoring-Systeme sind auch gern mal etwas unberechenbar...
Wer z.B. wie gewohnt und brav nach Dokumentation in Check_MK mehrzeilige Ausgaben in /usr/lib/check_mk_agent/local/${CACHE_ZEITINDEX}/mein_check.bash hinterlegt, der wird feststellen, dass diese nicht (mehr) funktionieren: Das Ergebnis wird einfach verschluckt und nicht angezeigt.
Mehrzeilige Ausgaben funktionieren anscheinend also nur noch in /usr/lib/check_mk_agent/local/ , wo jedoch dann kein Caching stattfindet und man den Client ggf. überlastet.
Ein Teufelskreis. :-) Was nun tun?
Ein kleines "if" mit "date" und die Ausgabe mit "tee" bringt hier einen Ausweg.
Hands on...!
Freitag, 4. September 2020
Wenn Windows 10 hinter einem Proxy nicht mehr updaten will....
Also - was tun?
Freitag, 7. August 2020
Wenn das Backup mal verstopft ist....
Da war er wieder, der klassische Moment auf der Console:
Man möchte "mal eben" ein CentOS-System neu aufsetzen und vorsichtshalber die Konfigurationsdateien etc. sichern - man weiß ja nie so recht, ob man doch noch was braucht....
Doch die Backupsoftware sagt "nein" und "Fehler",
für ein dd-image fehlt ein zweiter Speicherort mit Platz
und man weiß grade lokal ohnehin kaum aus dem Stehgreif, was man einpacken sollte.
Na dann.... bist du nicht willig.... dann nehme halt ein wenig Commandline-KungFu...
Mittwoch, 5. August 2020
Schatzi, ich weiss wo du deine eMails schreibst.
und ich empfing die Test-eMail auf meinem Laptop.
Nanu? In den ankommenden Maildaten versteckt, meldet sich auf einmal ein eMail-Useragent:
"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0"
Für einen Angreifer sind solche Informationen natürlich Gold wert, denn so kann man gleich den passenden Exploit heraussuchen, um den Empfänger einer eMail "zu beglücken".
Wer solche Informationen langfristiger sammelt weiß obendrein, wo der Absender seine eMails schreibt:
Erscheint der gleiche eMail-Client oft in einer Mail von MO-FR zwischen 10 und 14 Uhr auf , wird das wohl der Mailclient sein, der im Büro genutzt wird.
(Hint: Klar - ggf. passt obendrein sehr häufig auch noch der Netzbereich der einliefernden IP des Mailclients, aber auf Grund von VPN kommt man mit dieser Data nicht so schön weit wie mit dem Header "User-Agent")
Wahrscheinlich nutzt auch jemand einen anderen eMail-Client an seinem Handy, als an seinem PC; wahrscheinlich werden von dort gehäuft Mails zwischen 06:00 bis 08:00 Uhr bzw. zwischen 16:00 und 18 Uhr kommen. Und so weiter, und so fort....
"Schatzi, ich weiss, dass du grade nicht auf der Arbeit bist." "Und ich auch - ihr Chef."
Montag, 13. April 2020
Windows-Installations-Sticks und die Sache mit der Version
Welches Stickchen hätten Sie denn gern? |
Aus der Erfahrung empfiehlt sicht durchaus, eine jeweils schon veraltete Installations-Version an die Seite zu legen und nicht immer nur das "Installationsimage des Tages" auf einen Stick zu brennen, denn so habe ich selbst immer wieder erlebt, dass sich ein Windows 10 auf einem Notebook nicht vom stick neu installieren ließ, weil die Installationsversion "zu neu" war.
Erst ein Stick aus den Anfängen von Windows 10 half hier oft weiter....
Doch wie ermittele ich nun von den ganzen herumliegenden USB-Stick die Windows-Version, um diese z.b. auf der Rückseite des Sticks zu vermerken?
Samstag, 28. September 2019
Yubikey und der Volks-Personalausweis-Reader Reiner SCT Cyberjack
die Zweifach-Authentifizierung.
Beliebt dafür ist z.B. der Yubikey 5 - mit der ensprechenden App "Yubikey Authenticator" auf dem Handy, die einen OTP-Hash speichern bzw. einen dazugehörigen OTP-Key generieren kann, um sich "sicher" einzuloggen:
Den Stick an sein Handy halten um den Token zu generieren bzw. zu lesen - fertig.
Wenn man dann jedoch ohne Handy an seinem PC "mal eben" den Key eingeben will, muss man den USB-Stick dann umständlich in den USB-Port fummeln und das Programm am PC öffnen ...
Geht das denn nicht anders?
Donnerstag, 19. September 2019
Dauerbrenner: Die Sache mit den Kopfschmerzen
Amazon TV 4K-Stick und hoher Kontrast auf Samsung UE55JU6460
In den letzten Tagen war ich dann doch mal früher zu Hause und hatte periodisch immer wieder Kopfschmerzen. Mit einem Schmunzeln hat mich jemand darauf hingewiesen, ich hätte dieses Mal viel am Fernseher gesessen bzw. viel Computer gespielt; was sonst nicht wirklich der Fall ist.
Grübel Grübel - tatsächlich. Stimmt.
Das aber ein Amazon TV 4K-Stick zusammen mit einem Samsung-Fernseher ganz real die Ursache sein könnten, damit konnte keiner rechnen...
Montag, 26. August 2019
Tastenkombinationen der Bash
Vielleicht einmal die wichtigsten zusammen gefasst:
Cursor bewegen
CTRL+a Cursor an den Zeilenanfang
CTRL+e Cursor an das Zeilenende
CTRL+f Cursor ein Zeichen nach rechts
CTRL+b Cursor ein Zeichen nach links
CTRL+ESC f Cursor ein Wort nach rechts
ALT l Wort Cursor ein Wort nach rechts
CTRL+ESC b Cursor ein Wort nach links
ALT b Wort Cursor ein Wort nach links
Löschen und Vertauschen
CTRL+d den aktuellen Buchstaben löschen
CTRL+h den vorherigen Buchstaben löschen ("Backspace")
CTRL+t Buchstaben vertauschen
CTRL+ESC t Wort vertauschen
Ausschneiden und einfügen
CTRL+k Bis Zeilenende ausschneiden
CTRL+u Bis Zeilenanfang ausschneiden
CTRL+w vorheriges Wort ausschneiden
CTRL+ESC d folgendes Wort ausschneiden
CTRL+y einfügen (alt: folgendes Wort löschen)
CTRL+i automatisch Ergänzen (Tab-Funktion)
Lower und Uppercase
CTRL+ESC u uppercase für das gesamte nächste Wort
CTRL+ESC l lowercase für das gesamte nächste Wort
CTRL+ESC c lowercase für den ersten Buchstaben des nächsten Wortes
Ouptut- und Prozesskontrolle
CTRL+c Abbruch
CTRL+s Output anhalten
CTRL+q Output fortfahren
CTRL+l Output nach oben schieben
SHIFT+Bildaufwärts Output nach oben scrollen
SHIFT+Bildabwärts Output nach unten scrollen
CTRL+z Prozess in den Hintergrund schicken ("bg", zurück holen: "fg")
History
CTRL+r (suchbegriff) History-Suche
STRG+ESC .
das zuletzt benutzte Argument wiederholen
ALT . das zuletzt benutzte Argument wiederholen
Natürlich kann man auch selbst Tastenkombinationen definieren; ein kurzer Aufruf mit "bind -P" oder "bind -p" gibt erst einmal eine Übersicht.
Um den Tastencode zu finden, drückt man STRG-V und dann die gewünschte zu belegende Taste.
Ein Beispiel: "Cursor up" nach einem CTRL-V "^ [[A", wobei das einleitende"^[" wie bei Terminals üblich als "Escape" zu verstehen ist ---> Also ESC [A
Ein bind '"\e[A":history-search-backward' belegt die "Cursor up"-Taste mit History rückwärts.
Samstag, 24. August 2019
Samba und .DS_Store-Dateien
Es sammeln sich nach einiger Zeit Dateireste mit dem Namen ".DS_Store" an, in denen so eine "Apfelkiste" ihre Historie seines Dateiexplorers speichert.
Man kann diese Dateien einfach im Share verbieten, in dem man in der Datei /etc/samba/smb.conf ein paar Zeilen hinzu fügt:
veto files = /._*/.DS_Store/
delete veto files = yes
Dadurch werden ._ und .DS_Store-Dateien "unsichtbar" und von Samba nach der Erstellung gelöscht. Und anschließend räumt man einmal auf....
find -name ".DS_Store" -delete
oder auch
find \( -name ".DS_Store" -or -name "._*" -or -name ".TemporaryItems"
-name ".Trashes" -or
\) -delete
ist denkbar, um z.B: auch Mülleimer und temporäre Dinge zu löschen.
Allerdings ist das nicht unbedingt die beste Lösung, denn es gibt auch hin und wieder gern mal Dateien mit dem Prefix "._" in unixoiden Systemen -
und diese Dateien möchte man ja behalten: Da ist also große Vorsicht geboten.
Was nützt einem jedoch das Verwehren von "bösen Dateien" auf dem Samba-Share, wenn der Apple diese noch immer auf Network-Shares schreibt?
Schalten wir diese Unsitte einfach mal grundsätzlich ab!
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
Wordpress: Teile dieser Seite sind nicht sicher.
"Kannst du mal eben....?"
Ein Freund von mir hat einen Wordpress-Webauftritt bei meinem Lieblings-Host aus Europa und wollte gern ein kostenloses SSL-Zertifikat von Lets Encrypt einbinden:
Was was bei anderen Volkshostern wie z.B. 1&1 kostenlos per Mausklick im Kundenmenü und ohne große technische Kenntnisse machbar ist, artet dort oft für den normalen Menschen in ein handfestes Problem aus, wenn er nicht ein teures Bezahl-Zertifkat erwerben will...
"Klar, mach ich dir nebenbei mal. Gib mir die Logindaten."....
15 Minuten später war das Zertifikat über das besonders kundenfreudliche Bedienpanel "KIS" hereingebaut - und die Probleme gingen los....
"Teile dieser Seite sind nicht sicher. Dies können z.B. Grafiken sein."
....ojeh....