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, 4132 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
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(6)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Windows 10
gelöst Windows 10 Home "Netzlaufwerk nicht bereit" (19)

Frage von Oggy01 zum Thema Windows 10 ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Exchange Server
Exchange Postfach leeren - nicht löschen (11)

Frage von AndreasOC zum Thema Exchange Server ...