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, 4121 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 ..
Ähnliche Inhalte
Windows Server
gelöst FTP-Upload per Batchdatei in der Aufgabenplanung (3)

Frage von Dullodir zum Thema Windows Server ...

LAN, WAN, Wireless
gelöst Batchdatei um einen Proxy einzustellen (14)

Frage von CrystalFlake zum Thema LAN, WAN, Wireless ...

Batch & Shell
gelöst Batchdatei für Aufgabenplanung zum Löschen von Backups (2)

Frage von Winuser zum Thema Batch & Shell ...

Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(1)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Windows 10
Windows für Privatanwender "nicht mehr handhabbar" (26)

Frage von FA-jka zum Thema Windows 10 ...

LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (23)

Frage von pierrehansen zum Thema LAN, WAN, Wireless ...

Basic
Programmierung von Windows Programmen (10)

Frage von Ghost108 zum Thema Basic ...