Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Shelldatei umschreiben zu batchdatei

Frage Entwicklung

Mitglied: Backspace

Backspace (Level 1) - Jetzt verbinden

28.10.2010 um 01:12 Uhr, 4034 Aufrufe, 6 Kommentare

Hallo,

ist es möglich ohne goßen Aufwand eine Shelldatei zu einer Batchdatei umzuschreiben ?

Es geht darum: muß für ein heterogenes Serversystem mit Windows und Linux, Programme erstellen (Vorgaben: .bat / .sh).

Will nicht alles immer doppelt aufwendig machen müssen, zudem ich mich als Azubi auch noch sehr schwer damit tue, mich da reinzudenken.

Hab mir auch schon die cmd-Befehlsliste angeschaut, um für die bereits von mir verwendeten Befehlen in den Shelldateien die gleichen oder zumindest ähnliche Befehle für die Batchdateien zu finden.
Der einzige Befehl für den ich einen aus der cmd-Liste zuordnen konnte, ist "getmac" anstelle von"ifconfig".

Hab im folgenden die Shelldatei reingestellt (liest den Laufwerksnamen, den freien Festplattenplatz und die Mac-Adresse eines Rechners aus) :
#!/bin/bash

declare -a DRIVES

MACADDRESS=`ifconfig | grep Hardware | awk '{print $6}'`

MYOUTPUT=`df -hT | grep -v Dateisystem | grep -v server_share | grep -v mapper | awk '{print $NF,$(NF-1)}'`

FREESPACE=`df -hT | grep -v Dateisystem | grep -v server_share | grep -v mapper | awk '{print $(NF-1)}'`

for element in $MYOUTPUT

do
echo ${MYOUTPUT}
done

P.S.: läuft auch soweit, gibt mir die Ergebnisse komischerweise jedoch 8-fach aus !?


Danke im Voraus

Gruß

Backspace
Mitglied: Marvin32
28.10.2010 um 07:50 Uhr
Dein Problem wird sein, das die meisten Befehle von Windows in einer Unix Umgebung nicht existieren, oder/und eine ganz andere Parameterliste haben.

z.b. Die erste Zeile in deinem Shellscript bräuchtest du unter windows nicht (und in windows gibt es auch kein "declare")

ich befürchte, du musst den ganzen kram jeweils für die Win-Umgebung neu schreiben.

Schau dir doch mal die MS-Powershell an, damit kommst du auf jeden Fall schonmal weiter, da die Cmd-lets dort gleich oder ähnlich heißen, wie die Befehle in Unix/Linux.

Gruß
Marvin
Bitte warten ..
Mitglied: danielfr
28.10.2010 um 08:01 Uhr
Oder Du schaust Dir mal Cygwin an. Das emuliert eine Unix Umgebung auf einem Windows Rechner...
Gruß Daniel
Bitte warten ..
Mitglied: maretz
28.10.2010 um 08:24 Uhr
was möchtest du denn am schluss haben?

Weil es ja noch mehr Optionen gibt... Dazu müsstest du dann nur richtig programmieren lernen -> schon baust du dir halt was selbst... Für das Auslesen von Hardware z.B. könnte ich mir Perl vorstellen (c++ natürlich auch aber ich vermute etwas schwerer...). Dann umgehst du das Problem mit dem OS - weil dein Compiler / Interpreter dafür sorgt das du die Befehle ausführen kannst... Nachteil: Bei Perl müsstest du auf allen Rechnern natürlich erstmal perl installiert haben...
Bitte warten ..
Mitglied: Backspace
28.10.2010 um 13:29 Uhr
Hallo,

sitze nun seit heute morgen mit rauchendem Kopf dran und komm irgendwie keinen Schritt weiter.

aus Shelldatei: MACADDRESS=`ifconfig | grep Hardware | awk '{print $6}'`

bei der Shelldatei konnte ich (siehe obige Zeile) die Position der gesuchten Information ausmachen, nämlich:
1. führe Befehl ifconfig aus
2 .suche nach dem Begriff Hardware
3. in der Zeile mit dem Begriff Hardware befindet sich die MACADRESSE an der 6.Stelle

Wie ist das als Batchdatei am besten zu machen (mit " findstr ", " mit for /f "tokens= ", ....) ?

Hab damit schon rumhantiert, es passierte entweder gar nichts, oder die txt Datei in der ich die ausgelesenen Daten reinimportiert habe (per ">"-Anweisung), hat sich nur geöffnet (mit den gesamten ausgelesenen Daten drin).

Kann mir bitte evtl. jemand nur für die MACADRESSE, die Befehlszeile hinschreiben ?

Gebe ich den Befehl getmac ein, so erscheint folgendes:

Physikal. Adresse Transportname
xx-xx-xx-xx-xx-xx Nicht zutreffend

Ich brauche praktisch das, wo die xx-xx-.......... stehn.


Danke

Backspace
Bitte warten ..
Mitglied: Friemler
28.10.2010 um 20:06 Uhr
Hallo Backspace,

schau Dir bei FOR /F die Optionen SKIP=, DELIMS= und TOKENS= an, das sollte zum Ziel führen.

Gruß
Friemler
Bitte warten ..
Mitglied: Biber
28.10.2010 um 21:39 Uhr
Moin Backplatz,

Friemler hat völlig recht - lies einmal den FOR/?-Hilfetext am CMD-Prompt.
Dann kannst du es nächstes Mal ohne rauchenden Kopf.


Zitat von Friemler:
schau Dir bei FOR /F die Optionen SKIP=, DELIMS= und TOKENS= an, das sollte zum Ziel führen.

In diesem konkreten Fall brauchst du allerdings nur eine der Optionen (Demo am CMD-Prompt):

>for /f "skip=3" %i in ('getmac') do @echo Mac-Adresse:%i 
Mac-Adresse:00-nn-mm-xx-yy-zz
Im Batch jeweils zwei Prozentzeichen (%%i statt %i) schreiben.
Speichern der MAC-Adresse in eine Variable: Statt "echo %i" den Befehl 'Set myMAC=%i" verwenden.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
Script zum XML Datei Umschreiben (12)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
gelöst Mit Batchdatei Informationen auslesen und diese strukturiert in Excel ausgeben (9)

Frage von Flodsche zum Thema Batch & Shell ...

Batch & Shell
gelöst In Html-Datei per Batchdatei das Datum und die Uhrzeit eintragen (2)

Frage von Hakiegold zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (10)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...