Archiv der Kategorie: Scripts

ECHO‘ is not recognized as an internal or external command,

Hin und wieder verwende ich zum Bearbeiten von Scripts die Software „Visual Studio Code“. Schlicht und ergreifend, weil ich diesen Editor umstellen kann, sodass der Hintergrund dunkel ist, was für die Augen ganz angenehm ist.

Wenn man allerding mit Code ein neues Batchfile erstellt, kann es passieren, dass man beim späteren Ausführen auf folgenden Fehler stösst:

C:\Windows\system32>´++@ECHO OFF
‚´++@ECHO‘ is not recognized as an internal or external command, operable program or batch file.

Nach einigem Gesuche bin ich dann schnell auf die Ursache gestossen:
Microsoft Visual Code verwendet utf-8 als Standardcodierung. Somit ist das Batch nicht richtig lesbar.
Abhilfe schafft man dadurch, dass man das Batch mit Notepad öffnet und bei „Speichern als…“ die Codierung auf ANSI umstellt.

ANSI Echo offBeim Öffnen bestehender Batchfiles habe ich das Problem noch nicht gehabt.
Wenn man möchte, kann man das umgehen, indem man in „Visual Studio Code“ die Standardcodierung umstellt:
Unter Files –> Preferences –> Settings findet man folgenden Eintrag:

// The default character set encoding to use when reading and writing files.
„files.encoding“: „utf8“,

Hat man die Zeile ausgewählt, kann man links auf ein Stiftsymbol klicken und hat dann die Auswahl aus den einstellbaren Zeichensätzen.

Bei ssh Verbindungen werden die Kennworte lesbar dargestellt

Problem:
Wenn man beim Kunden sitzt und sich per ssh auf einen Server verbindet, möchte man in der Regel nicht, dass die eingegebenen Kennworte lesbar dargestellt werden.

Bei folgenden Beispielen ist dies aber der Fall:

Beipiel1:
ssh benutzer@server ‚mysql -u benutzer -p‘

Beispiel2:
ssh benutzer@server „sudo ls“

In der jetzt kommenden Kennwortabfrage  wird in beiden Fällen das Kennwort gut lesbar angezeigt.

Lösung:
Um die Passworteingabe wieder zu verstecken, muss man lediglich die Option ‚-t‘ mitgeben.  Also:
ssh -t benutzer@server ‚mysql -u benutzer -p‘
bzw.
ssh -t benutzer@server „sudo ls“

Dadurch wird die Kennworteingabe wieder „unsichtbar“ gemacht.

In dem Manpages zu ssh findet man folgende Beschreibung:
-t      Force pseudo-terminal allocation.  This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when
             implementing menu services.  Multiple -t options force tty allocation, even if ssh has no local tty.

Normalerweise wird bei einer ssh-Verbindung kein Pseudoterminal geöffnet, welche die Ein- und Ausgabe mit einem Prozess verbindet.
Daher werden die Kennworteingaben auch nicht maskiert.

Wenn man das dauerhaft haben möchte, ohne jedes Mal das ‚-t‘ eingeben zu müssen, kann man die ‚~/.ssh/config‘ entsprechend bearbeiten. Mehr dazu ist in den Manpages zu lesen:
man 5 ssh_config im Bereich RequestTTY

brace expansion: Verzeichnisse erstellen und löschen

Wenn man ein Verzeichnis mit mehreren Unterordnern erstellen will, kann man natürlich per mkdir jeden Ordner einzeln anlegen.
Das Ganze kann man allerdings auch einfacher haben.

Konkretes Beispiel: Beim Anlegen von Projektverzeichnissen kann es hilfreich sein, wenn man die benötigten Unterordner gleich mit erstellen kann:

sudo mkdir -p /Projekte/Nummer220/{Hardware,Software,Dokumentation}

Das ‚-p‘ muss mitgenommen werden, da dadurch die benötigten übergeordneten Verzeichnisse (in diesem Fall die ‚Nummer220‘) erstellt werden.
Im Verzeichnis ‚/Projekte‘ wird nun ein Ordner ‚Nummer 220‘ mit den Unterordnern ‚Hardware‘, ‚Software‘ und ‚Dokumentation‘ angelegt.

Was für das Erstellen von Verzeichnissen gilt, geht auch beim Löschen.
Will man das Projektverzeichnis behalten, aber die Unterordner löschen, kann man das mit folgendem Einzeiler tun:

 sudo rm -r /Projekte/Nummer220/{Hardware,Software,Dokumentation}

Wichtig ist dabei, dass man das ‚-r‘ für rekursiv setzt, da man ansonsten einige Fehlermeldungen bekommt, da ‚rm‘ ansonsten von Dateien ausgeht und den Dienst verweigert.

Backupdatei mit brace expansion schnell erstellen

Hat man einen längeren Dateipfad, dann kann es manchmal nervig sein, wenn man diese sichern will. Oft sieht man folgenden Ansatz:

cp /etc/meinprogramm/programmd/meineconfig.conf /etc/meinprogramm/programmd/meineconfig.conf.bak

Ist natürlich auch mit TAB-Ergänzung oder Copy&Paste recht mühselig.
In diesem Fall kann einem die ‚brace expansion‘ weiterhelfen.
Man erledigt die Kopie durch das Anfügen einer Spitzen Klammer mit Komma und der gewünschten Erweiterung:

cp /etc/meinprogramm/programmd/meineconfig.conf{,.bak}

Dadurch wird dann folgende Kopie erzeugt:

/etc/meinprogramm/programmd/meineconfig.conf.bak

Mehr Informationen dazu findet ihr z.B. im Bash Reference Manual oder bei wiki.bash-hackers.org

Demnächst gibt es einen weiteren Artikel, in dem ich beschreibe, wie man diese Funktion zum Anlegen von Dateien verwenden kann.

Exchange: Versteckte User und Verteilergruppen als Liste anzeigen

Wenn man sich alle versteckte Verteilergruppen in Exchange (z.B. wegen einer Umstellung) anzeigen lassen will, kann man das per Powershell tun:

get-distributiongroup | select name, Hiddenfromaddresslistsenabled | WHERE {$_.HiddenFromAddressListsEnabled -eq $true }

Wenn man sich entsprechend Benutzer-Mailboxen anzeigen lassen will, geht man so vor:

Get-Mailbox | Where {$_.HiddenFromAddressListsEnabled -eq $True}

Falls einem der Alis und die SendQuota nicht wichtig sind, kann man die mit einem kleinen Filter ausblenden:

Get-Mailbox | Where {$_.HiddenFromAddressListsEnabled -eq $True} | Select Name, HiddenFromAddressListsEnabled

Das Ganze kann man sich natürlich auch wieder in eine CSV-Datei ausgeben, die per Excel, LibreOffice Calc oder jeder anderen Tabellenkalkulation importiert werden kann.

Get-Mailbox | Where {$_.HiddenFromAddressListsEnabled -eq $True} | Select Name, HiddenFromAddressListsEnabled | export-csv c:\exports\hiddenUsers.csv

 

Quellen:
Oxford SBS Guy
social.technet.microsoft.com