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

Batch Befehle in Shell umwandeln

Frage Linux

Mitglied: Naucho

Naucho (Level 1) - Jetzt verbinden

12.12.2007, aktualisiert 18.12.2007, 6760 Aufrufe, 12 Kommentare

Hallo an Alle,

und zwar soll ich ein Script was mit in Batch vorliegt in Shell umformen , weil wir bald einen Linux Server bekommen.

Leider habe ich da sozusagen kaum Erfahrung, es ist auch nicht so einfach darum bitte ich Euch quasi um Hilfe hier.


Hier mal ein paar Zeilen die ich umformen soll:
01.
set bds_dir=%bds_rootDir_Aufbau%\_anne_neu 
02.
set NLS_CHARACTERSET=WE8ISO8859P15 
03.
call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_dir%\createTable_ANNE.sql 
04.
rem rem rem move %bds_dir_quelldaten%\*.csv %bds_dir_quelldaten%\%INFILE% 
05.
pushd %bds_dir_benu% 
06.
set SOURCE_DIR=%bds_rootDir_Quelldaten%\anne 
07.
set TARGET_DIR=%bds_rootDir_Datensicherung_f%\_anne 
08.
 
09.
set DATAFILE=%1
Ich hoffe ihr könnt mir da ein wenig helfen ,sodass ich als Einsteiger damit umgehen kann.


Gruß Naucho
Mitglied: Dani
12.12.2007 um 13:05 Uhr
Hallo Naucho,
an sich sollte das kein Problem sein. Ich Versuche es mal:
01.
#!/bin/bash 
02.
 
03.
bds_dir="PFAD" 
04.
NLS_CHARACTERSET="WE8ISO8859P15" 
05.
??? 
06.
rem mv "%bds_dir_quelldaten%/*.csv" "%bds_dir_quelldaten%/%INFILE%" 
07.
??? 
08.
SOURCE_DIR="PFAD" 
09.
TARGET_DIR="PFAD" 
10.
 
11.
DATAFILE=$1
Die ??- Zeilen sind die Batchzeilen, wo ich nicht schlau draus werde was du da machst bzw. vorhast.

Zeile 3:
Was soll dort genau passieren?!

Zeile 4:
ein rem reicht eigentlich völlig aus.

Zeile 5:
Was genau macht pushd ? Kann leider damit nichts anfangen.

Die einzelnen Variablen wie %bds_rootDir_Datensicherung_f%, %bds_rootDir_Quelldaten%, etc... musst du natürlich auch noch deklarieren bzw. sind das bei die Systemvariablen? Sprich wurden von einem Programm erzeugt und sind somit immer vorhanden.


Grüße
Dani
Bitte warten ..
Mitglied: Naucho
12.12.2007 um 13:10 Uhr
Das gute ist , ich weiß das selbst nicht klingt doof ist aber so.

Bin inner Ausbildung und soll diese Zeilen in Shell abändern , blicke leider selbst nicht durch.

Dies ist Batch und ich soll sie in Shell abwandeln...
Bitte warten ..
Mitglied: Dani
12.12.2007 um 13:17 Uhr
Na, das kann aber nicht die Ganze Batchdatei gewesen sein. <grübel>

Weil das Script ist so nicht vollständig. Geh mal in die Eingabeaufforderung und gebe einfach echo %bds_rootDir_Aufbau% ein. Falls ein Wert exstiert, ist es eine Systemvariable. Andernfalls eine erzeugte (zur Laufzeit) Variable.

Die Zeilen, wo ich bisher umgesetzt habe, hättest du sicher auch mit Google hinbekommen. Denn SHELL-Scripts gibts da genug zum Spicken.


Gruß
Dani

PS: In Ausbildung sollte man eigentlich zuerst einmal ein bisschen googlen und Howto zur Shell lesen. Dann ist vieles einfacher. Denn Linux ist definitiv ein wichtiger Bestandteil der IT. Daran wird sich so schnell sicher nichts ändern - im Gegenteil.
Bitte warten ..
Mitglied: Naucho
12.12.2007 um 13:32 Uhr
Hier dann mal das komplette Script, ich habe 0 Erfahrung damit , wenn ich ein fertig umgesetztes Beispiel habe , kann ich mich daran orientieren.

Ich hoffe ihr könnt mir da weiterhelfen hier nun das Script:
01.
@echo off 
02.
cls 
03.
 
04.
call ..\admin\Environment\env_bds.bat 
05.
 
06.
set bds_dir=%bds_rootDir_Aufbau%\_anne_neu 
07.
set bds_dir_quelldaten=%bds_rootDir_Quelldaten%\Anne 
08.
set bds_dir_benu=%bds_rootDir_Aufbau%\Admin\Benutzerverwaltung 
09.
set bds_dir_logfiles=%bds_rootDir_Logfiles%\anne 
10.
 
11.
set NLS_CHARACTERSET=WE8ISO8859P15 
12.
set NLS_NCHAR_CHARACTERSET=WE8ISO8859P15 
13.
set NLS_LANG=GERMAN_GERMANY.WE8ISO8859P15 
14.
 
15.
 call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_tools_dir%\set_aktBeladungstermin.sql 
16.
 call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_protAppDir%\insertIntoJobkontrolle.sql ANNE 1 JOB_START ANNE 
17.
 
18.
     
19.
echo -------------------------------------------------------------------- 
20.
echo -- (01) create Table t_anne 
21.
echo -------------------------------------------------------------------- 
22.
 
23.
    call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_dir%\createTable_ANNE.sql 
24.
 
25.
 
26.
echo -------------------------------------------------------------------- 
27.
echo -- (02) load Table t_anne 
28.
echo -------------------------------------------------------------------- 
29.
 
30.
    set INFILE=AB_ANNE_BDS_20071021.csv 
31.
    rem rem rem move %bds_dir_quelldaten%\*.csv %bds_dir_quelldaten%\%INFILE% 
32.
     
33.
    call sqlldr userid=%db_user%/%db_password%@%db_instance% control=%bds_dir%\loadTable_ANNE.ctl log=%bds_dir_logfiles%\%AKT_STAND_KW%_loadTable_ANNE.log bad=%bds_dir_logfiles%\%AKT_STAND_KW%_loadTable_ANNE.bad direct=Y skip=1 data=%bds_dir_quelldaten%\%INFILE% 
34.
 
35.
 
36.
echo -------------------------------------------------------------------- 
37.
echo -- (03) arbeiten an Tabelle t_anne 
38.
echo -------------------------------------------------------------------- 
39.
     
40.
    call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_dir%\worksForTable_Anne.sql 
41.
 
42.
 
43.
echo -------------------------------------------------------------------------------- 
44.
echo -- (88) Anne Quelldaten sichern 
45.
echo -------------------------------------------------------------------------------- 
46.
 
47.
    call 88_zipMoveAndDelSourcefiles_ANNE.bat %INFILE% 
48.
 
49.
 
50.
echo ----------------------------------------------------------------------------------- 
51.
echo -- Rechte granten fuer Tabelle ANNE 
52.
echo ----------------------------------------------------------------------------------- 
53.
 
54.
     pushd %bds_dir_benu% 
55.
         call run_grant_Rights_for_System ANNE 
56.
     popd 
57.
 
58.
 
59.
 call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_protAppDir%\insertIntoJobkontrolle.sql ANNE 2 JOB_ENDE ANNE
Bitte warten ..
Mitglied: 58502
12.12.2007 um 13:35 Uhr
@Dani

pushd /?
 
Sichert das aktuelle Verzeichnis für die Benutzung des Befehls POPD, und
wechselt dann zum angegebenen Verzeichnis.
 
PUSHD [Pfad|...]
  
     Pfad Gibt das Verzeichnis an, zu dem gewechselt werden soll.
Bitte warten ..
Mitglied: Naucho
12.12.2007 um 13:45 Uhr
Könnt Ihr mir denn bei dem Script weiterhelfen ?

Dies soll in Shell umgeformt werden , ich habe wirklich 0 Erfahrung da drinne.

Es ist für mich eine große Hilfe , wenn ich den Vergleich habe von Batch in Shell , hätte ich die Erfahrung würde ich mich dran setzen.

Nur habe ich diese nicht und weiß nicht wo ich überhaupt anfangen soll.

Danke erstmal an Euch
Bitte warten ..
Mitglied: Dani
12.12.2007 um 15:15 Uhr
@7stein
Danke für den Hinweis. Kenn leider nicht den Befehl unter Linux dazu.
01.
#!/bin/bash 
02.
clear 
03.
 
04.
call ..\admin\Environment\env_bds.bat <===BATCHZEILE 
05.
 
06.
 
07.
bds_dir=%bds_rootDir_Aufbau%/_anne_neu 
08.
bds_dir_quelldaten=%bds_rootDir_Quelldaten%/Anne 
09.
bds_dir_benu=%bds_rootDir_Aufbau%/Admin/Benutzerverwaltung 
10.
bds_dir_logfiles=%bds_rootDir_Logfiles%/anne 
11.
 
12.
NLS_CHARACTERSET=WE8ISO8859P15 
13.
NLS_NCHAR_CHARACTERSET=WE8ISO8859P15 
14.
NLS_LANG=GERMAN_GERMANY.WE8ISO8859P15 
15.
 
16.
call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_tools_dir%\set_aktBeladungstermin.sql  <===BATCHZEILE 
17.
 call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_protAppDir%\insertIntoJobkontrolle.sql ANNE 1 JOB_START ANNE  <===BATCHZEILE 
18.
 
19.
     
20.
echo -------------------------------------------------------------------- 
21.
echo -- (01) create Table t_anne 
22.
echo -------------------------------------------------------------------- 
23.
 
24.
    call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_dir%\createTable_ANNE.sql  <===BATCHZEILE 
25.
 
26.
 
27.
echo -------------------------------------------------------------------- 
28.
echo -- (02) load Table t_anne 
29.
echo -------------------------------------------------------------------- 
30.
 
31.
    INFILE=AB_ANNE_BDS_20071021.csv 
32.
    rem move %bds_dir_quelldaten%\*.csv %bds_dir_quelldaten%\%INFILE%  <===BATCHZEILE 
33.
     
34.
    call sqlldr userid=%db_user%/%db_password%@%db_instance% control=%bds_dir%\loadTable_ANNE.ctl log=%bds_dir_logfiles%\%AKT_STAND_KW%_loadTable_ANNE.log bad=%bds_dir_logfiles%\%AKT_STAND_KW%_loadTable_ANNE.bad direct=Y skip=1 data=%bds_dir_quelldaten%\%INFILE%  <===BATCHZEILE 
35.
 
36.
 
37.
echo -------------------------------------------------------------------- 
38.
echo -- (03) arbeiten an Tabelle t_anne 
39.
echo -------------------------------------------------------------------- 
40.
     
41.
    call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_dir%\worksForTable_Anne.sql  <===BATCHZEILE 
42.
 
43.
 
44.
echo -------------------------------------------------------------------------------- 
45.
echo -- (88) Anne Quelldaten sichern 
46.
echo -------------------------------------------------------------------------------- 
47.
 
48.
    call 88_zipMoveAndDelSourcefiles_ANNE.bat %INFILE% <===BATCHZEILE 
49.
 
50.
 
51.
echo ----------------------------------------------------------------------------------- 
52.
echo -- Rechte granten fuer Tabelle ANNE 
53.
echo ----------------------------------------------------------------------------------- 
54.
 
55.
     pushd %bds_dir_benu%  <===BATCHZEILE - Kenne den Befehl unter Linux nicht 
56.
         call run_grant_Rights_for_System ANNE  <===BATCHZEILE 
57.
     popd  <===BATCHZEILE - Kenne den Befehl unter Linux nicht 
58.
 
59.
 
60.
 call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_protAppDir%\insertIntoJobkontrolle.sql ANNE 2 JOB_ENDE ANNE  <===BATCHZEILE
Ich habe die entsprechenden Zeilen markiert, die du doch selber ausarbeiten musst. Da ich nicht weiß, was der Befehl (z.B. sqlldr) macht.
Nicht vergessen diese Zeile (call ..\admin\Environment\env_bds.bat
) + die Datei auch noch anzupassen.


Grüße
Dani
Bitte warten ..
Mitglied: Naucho
12.12.2007 um 15:38 Uhr
Ich danke dir erstmal dafür !

Hilft mir ja schon ein wenig weiter ...
Bitte warten ..
Mitglied: Naucho
18.12.2007 um 12:51 Uhr
Komme ehrlich gesagt nicht sonderlich weiter , zumal ich da 0 Erfahrung habe.

Nunja , vielleicht gibt es ja hier im Forum Leute die sich doch besser damit noch auskennen.


Hier mein überarbeitetes Script:

#!/bin/bash
clear

call ..\admin\Environment\env_bds.bat


bds_dir=$bds_rootDir_Aufbau/_anne_neu
bds_dir_quelldaten=$bds_rootDir_Quelldaten/Anne
bds_dir_benu=$bds_rootDir_Aufbau/Admin/Benutzerverwaltung
bds_dir_logfiles=$bds_rootDir_Logfiles/anne

NLS_CHARACTERSET=WE8ISO8859P15
NLS_NCHAR_CHARACTERSET=WE8ISO8859P15
NLS_LANG=GERMAN_GERMANY.WE8ISO8859P15

call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_tools_dir%\set_aktBeladungstermin.sql
call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_protAppDir%\insertIntoJobkontrolle.sql ANNE 1 JOB_START ANNE


echo --------------------------------------------------------------------
echo -- (01) create Table t_anne
echo --------------------------------------------------------------------

call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_dir%\createTable_ANNE.sql


echo --------------------------------------------------------------------
echo -- (02) load Table t_anne
echo --------------------------------------------------------------------

INFILE=AB_ANNE_BDS_20071021.csv
rem move $bds_dir_quelldaten\*.csv $bds_dir_quelldaten\%INFILE%

call sqlldr userid=%db_user%/%db_password%@%db_instance% control=%bds_dir%\loadTable_ANNE.ctl log=%bds_dir_logfiles%\%AKT_STAND_KW%_loadTable_ANNE.log bad=%bds_dir_logfiles%\%AKT_STAND_KW%_loadTable_ANNE.bad direct=Y skip=1 data=%bds_dir_quelldaten%\%INFILE% <===BATCHZEILE


echo --------------------------------------------------------------------
echo -- (03) arbeiten an Tabelle t_anne
echo --------------------------------------------------------------------

call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_dir%\worksForTable_Anne.sql


echo --------------------------------------------------------------------------------
echo -- (88) Anne Quelldaten sichern
echo --------------------------------------------------------------------------------

call 88_zipMoveAndDelSourcefiles_ANNE.bat %INFILE%


echo -----------------------------------------------------------------------------------
echo -- Rechte granten fuer Tabelle ANNE
echo -----------------------------------------------------------------------------------

pushd $bds_dir_benu
call run_grant_Rights_for_System ANNE
popd


call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_protAppDir%\insertIntoJobkontrolle.sql ANNE 2 JOB_ENDE ANNE
Bitte warten ..
Mitglied: Dani
18.12.2007 um 13:11 Uhr
Hi!
Also du erstmal herausfinden, was "call sqlplus....", "call sqlldr..." macht. Denn ich bin mir fast sicher, die Befehle gibt es unter Linux nicht.
Des Weitern wäre es nicht schlecht, wenn du mal für jede ZEile im Batch notierst was am Ende dieser Zeile passieren sollte.
Beispiel:
01.
call sqlplus "%db_user%/%db_password%@%db_instance%" @%bds_dir%\worksForTable_Anne.sql 
Denn ich als Außenstehender kann damit nichts anfangen!
---
Des Weiteren rufst in dieser "alten" Batch nochmal eine Batchdatei (call 88_zipMoveAndDelSourcefiles_ANNE.bat ...) auf. Diese musst du natürlich auch umstellen. Nicht zu vergessen, den call am Anfang (call ..\admin\Environment\env_bds.bat ). Die am Ende natürlich auch (call run_grant_Rights_for_System....).
Es gibt doch auch eine Aufgabenbschreibung, was genau (SChritt für Schritt) in diesem Script passieren soll. Denn es ist auf jeden Fall keins aus der Sorte "Ich wurde geschrieben, weils mir langweilig war". DAfür ist es zulange und zu kompliziert.
Für "pushd ...." bzw. "popd..." musst du wohl googlen. Ich kenne auf Anhieb keinen Befehl unter Linux, der das Gleiche macht.


Grüße
Dani
Bitte warten ..
Mitglied: Naucho
18.12.2007 um 15:42 Uhr
Ich habe dieses Script nicht geschrieben und weiß selbst nicht , was da genau passiert.

Habe nur die Ruhmvolle Aufgabe dieses Script genauso unter Linux fähig zu machen.

Vielleicht versteht man nun meine Lage , übrigens der Mitarbeiter der es war ist schon längst nicht mehr im Hause.
Bitte warten ..
Mitglied: Biber
18.12.2007 um 19:07 Uhr
Moin Naucho,

Ich habe dieses Script nicht geschrieben ...
Lass ich gelten.
und weiß selbst nicht , was da genau passiert.
Dann finde es heraus.

Die paar Batchzeilen oben verraten in der Tat recht wenig darüber, was dort passiert.
Das liegt aber daran, dass eigentlich ein Sack voll anderer Skripte (vermutlich ein paar 1000 Zeilen) aufgerufen werden.
  • Sqlldr ist der so genannte Oracle SQL-Loader, der genau wie
  • sqlPlus, ein Oracle SQL-Client-Utitily, dass auch *.sql-Skripte "als Batch" ausführen kann
  • der "88_zipMoveAndDelSourcefiles_ANNE.bat", der wiederum sicherlich auch ein Zip-Utility aufruft...

Alles das unterstellt, dass auf der Linux-Büchse gleichnamige Skripte und Executables und Datenbankclients und Datenbank-Connections da und im Suchpfad sind. Und die zwei Dutzend SQL-Input-Files,die als Parameter angegeben sind. Und die Rechte, dies alles unter Linix anfassen zu dürfen.

Also, ich will mich hier nicht aufregen *laaaaaaaaaaaaaaaangsam bis 200 zähle* , aber ich denke, Du hast die Aufgabe falsch verstanden.

Ich versuche es mal ganz vorsichtig:
Bevor Du ein Skript in eine völlig andere Umgebung "migrierst", "übersetzt", "portierst" oder was immer Du glaubst mit der versuchten Wort-für-Wort-Übersetzung erreichen zu können, davor musst Du doch wenigstens halbwegs wissen
  • was liegt an Input vor oder muss als Ressource (Utility, Steuerdatei, SQL-Skript) vorhanden sein?
  • was soll das Skript bewirken?
  • wie ist die Verarbeitungslogik (nicht die handwerkliche Umsetzung, sondern abstrakt)?

Du kannst doch nicht ein Aquarium zentimeterweise in eine Honda GoldWing "übersetzen" oder ein Glas Becks Schluck für Schluck in eine Dose Erbsen, oder?

Und einen Windows-CMD-Batch kannst Du auch nur dann Zeile für Zeile "umstellen", wenn er nur interne Befehle enthalten würde. Nicht aber, wenn dieser Batch ein Nacheinander-Aufrufen von vielen bunten (Windows-) Utilities ist.

So, und nun klär, was da überhaupt zu den letzten drei Spielgelstrichen zu sagen ist, und kann können wir ein neues Bash-Skript entwerfen.

Oder Du sagst Deinem Cheffe, das keinerlei Kommentare und keinerlei Dokumentation vorhanden sind und dass es deshalb nur ein/e Entwickler/in entschlüsseln kann.

Hier im Forum z.B. gibt es mehrere, die man/frau mieten kann.

Grüße
Biber
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
gelöst Per FTP-Shell oder Batch in ein unbekanten Ordner wechseln (8)

Frage von Ducky2 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch-Datei in Exe-Datei umwandeln - .exe im Autostart (7)

Frage von Luuke257 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...