Schlagwort-Archive: Batch

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.

Windows: Uptime anzeigen

Will man sich nur die Startzeit des Systems anzeigen lassen, tippt man in der Commandline einfach ’starttime‘ ein.
Kein Schnick, kein Schnack, kein Taskmanager usw.

Ich habe mir jetzt folgendes Batch erstellt und in C:\Windows\System32\EigeneBatches gespeichert:

@echo off
:: Autor:            Peter Maier
:: Datum:            17.06.2016
:: Dateiname:        starttime.bat
:: Beschreibung:    Zeigt die Startzeit eines PCs an. 
:: Verwendung:        cmd --> starttime
:: Abhängigkeiten:    Bordmittel
:: Quelle:             http://www.psteiner.com/2013/05/windows-uptime.html
::#######################################################
:: Variablen
:: Funktionen
:: Eigentliches Script
:: englisches Windows
:: for /f "tokens=1,2,*" %%i in ('net statistics workstation ^| find "since"') do @echo %COMPUTERNAME% up since %%k
::deutsches Windows
for /f "tokens=1,2,*" %%i in ('net statistics workstation ^| find "seit"') do @echo %%k

Ich habe den ursprünglichen Teil für ein englisches Windows mal drin gelassen. Sollte es nicht funktionieren, muss man ggfs. einfach mal ’net statistics workstation‘ auf der Kommandozeile ausführen.
Dann hat man schon mal die Info, welche Informationen es hier gibt.
Im deutschen Text steht in der Zeile z.B.

Statistik seit 22/06/2016 13:56:21

Wenn man es sich in der System32 ablegt oder eine PATH Variable auf das passende Verzeichnis setzt, kann man nun einfach ’starttime‘ eingeben und bekomt die gewünschte Info.

Linux: SSD und fstrim

Setzt man in einem Linux Rechner SSD-Platten ein, stolpert man früher oder später über das Thema TRIM.
Kurz gefasst kann man sagen, dass es bei der Trim-Thematik darum geht, dass ungenutzte Speicherbereiche der Platte wieder freigegeben werden.
Das passende Tool dazu ist fstrim. Originaltext:

fstrim is used on a mounted filesystem to discard (or "trim") blocks which are not in use by the filesystem.  This is useful for solid- state drives (SSDs) and thinly-provisioned storage.

Bevor man nun in wilden Aktionismus verfällt: Don’t panic! 🙂
Die optimalsten Dateisysteme für SSDs sind momentan ext4 und btrfs.
Neuere Linux Distributionen (seit Linux 2.6.33) haben sich der Problematik bereits angenommen. So wird bei Ubuntu z.B.  seit Ubuntu 14.04 LT (Ubuntu 14.10 Quelle) wöchentlich ein Job ausgeführt, der die Speicherbereiche freigibt.
Der passende Job heißt /etc/cron.weekly/fstrim

Kann meine Platte damit umgehen?
Neuere Platten sollten das Verfahren grundsätzlich unterstützen. Wer auf Nummer sicher gehen will, kann prüfen, ob es die Eigenschaft bei seiner Platte gibt:

sudo hdparm -I /dev/sda | grep -i TRIM

Als Bestätigung sollte dann die Meldung „Data Set Management TRIM supported“. Wenn keine Rückmeldung kommt, ist TRIM bei dieser Platte nicht unterstützt.

Man kann bei seinem System auch folgendermaßen vorgehen:

Ist es schon aktiv?

sudo systemctl status fstrim.timer | grep enabled

Wenn nicht, schalten wir es ein:

systemctl enable fstrim.timer

Hier kann man noch mal ins Log schauen:

journalctl -u fstrim

Bei OpenSuse/Leap:
systemctl enable fstrim.service
systemctl start fstrim.service

Es gibt auch Ansätze ein eigenes Script laufen zu lassen, aber ich denke, dass sich das bei neueren Systemen bald erledigt hat.

 

Linux: Dateiliste mit ls und voller Pfadangabe

Gesucht war eine Auflistung aller Dateien eines Ordners mit absolutem Pfad

-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test1/file1
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test1/file2
Hier ist die Lösung, die ich dazu gefunden habe:

find /tmp -type f -print0 | xargs -0 ls -laS | sed -r ’s#( +)#\t#1′ | sed -r ’s#( +)#\t#1′ | sed -r ’s#( +)#\t#1′ | sed -r ’s#( +)#\t#1′ | sed -r ’s#( +)#\t#1′ | sed -r ’s#( +)#\t#3′

 

Ergebnis:

-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test1/file1
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test1/file2
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test1/file3
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test1/file4
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test2/file1
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test2/file2
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test2/file3
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test3/file1
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test3/file2
-rw-r–r–      1       root    root    0       2009-06-17 14:08 /tmp/test3/file3

 

Beziehungsweise:

find /tmp -type f -print0 | xargs -0 ls -laS | sed -r ’s#\S+\s+\S+\s+\S+\s+\S+\s+(\S+)\s+(\S+\s+\S+\s+\S+)\s+(.*)#\1\t\2\t\3#‘
als etwas kürzere Variante  🙂

 

gefunden habe ich das hier:
http://www.fedoraforum.de

Gelöst: Sudo for Windows läuft nicht

Problem:
Das Tool „Sudo for Windows“ läßt sich zwar installieren, aber der Dienst läuft nicht.Ggfs. läuft der Dienst, aber das Tool bringt eine Fehlermeldung, wenn man ein Programm per ’sudo‘ starten möchte.

Lösung:
Das Problem tritt auf, wenn man Sudo for Windows auf einem Betriebssystem laufen lässt, das nicht englischsprachig ist. Es werden nämlich Gruppen in den Konfigurationsdateien vorausgesetzt, die in deutschen Systemen nicht existieren.

Schritt1:
Anpassen der Sudowin.Server.exe.config im Verzeichnis %ProgramFiles%\Sudowin\Server.
Also zum Beispiel unter:
C:\Program Files (x86)\Sudowin\Server\Sudowin.Server.exe.config

Dort muss man folgende Zeile suchen:
<channel type=“System.Runtime.Remoting.Channels.Ipc.IpcServerChannel, System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ portName=“sudowin“ secure=“True“ tokenImpersonationLevel=“Impersonation“ authorizedGroupName=“Users“>

und den Eintrag authorizedGroupName=“Users“ ändern in authorizedGroupName=“Benutzer

Schritt2:
Anpassen der „%ProgramFiles%\Sudowin\Server\sudoers.xml“
und folgende Änderung vornehmen:
privilegesGroup=“Administrators“ zu privilegesGroup=„Administratoren

Erklärung:
Was ist „Sudo for Windows“?
Sudo for Windows erlaubt angemeldeten Benutzern Prozesse mit erhöhten Privilegien auszuführen, indem sie ihr eigenes Passwort als Bestätigung eingeben.
Im Gegensatz zum ‚runas‘ Befehl von Microsoft beleiben das Benutzerprofil und die Besitzrechte auf Dateien erhalten.
Alternativ müsste man den Benutzer zum Administrator machen, das Programm ausführen und dann die Berechtigung wieder zurück nehmen.

Originaltext Sourceforge:
„Sudo for Windows (sudowin) allows authorized users to launch processes with elevated privileges using their own passphrase. Unlike the runas command, Sudo for Windows preserves the user’s profile and ownership of created objects.“