Veröffentlicht am :
Verwaltung CREATION_INTERNE

AHGrpipe Makro - Ausführung von Remote-Systembefehlen

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Attention : Dieser Code erfordert Administratorrechte.
Dieses Makro verwendet `rsubmit`, um Code an eine Remote-Sitzung zu übermitteln. Der Remote-Code verwendet die Methode `filename pipe`, um einen Unix-Befehl (ksh) auszuführen, nachdem die Umgebung (PATH, Alias) konfiguriert wurde. Das Ergebnis des Befehls wird über ein `data _null_` gelesen und über `sysrput` an die lokale Sitzung zurückgegeben. Das Makro behandelt auch einen Sonderfall, in dem der Befehl an `%AHGsubmitrcommand` delegiert wird.
Datenanalyse

Type : CREATION_INTERNE


Die verarbeiteten Daten stammen aus der Standardausgabe (stdout) eines über eine Pipe ausgeführten Systembefehls. Es werden keine externen SAS-Tabellen gelesen.

1 Codeblock
MACRO CONTROL
Erklärung :
Bedingte Verwaltung zur Delegierung der Ausführung oder Vorbereitung von Makrovariablen für die Übertragung an die Remote-Sitzung über `%syslput`.
Kopiert!
1%IF &lmacro=q %THEN
2%DO;
3%AHGsubmitrcommand(cmd=&rcommand);
4%goto exit;
5%END;
6 
7%syslput rcommand=%bquote(&rcommand);
8%syslput lmacro=&lmacro;
9%syslput rmycmd=&rcommand;
10%syslput rformat=%str(&FORMAT);
11%syslput rdlm=%str(&dlm);
12%syslput rpiperesult=;
2 Codeblock
DATA STEP Data
Erklärung :
Der `rsubmit`-Block wird auf dem Remote-Server ausgeführt. Er initialisiert eine `filename pipe` mit einer spezifischen Umgebungskonfiguration (hartkodierte Pfade, ksh-Shell), führt den Befehl aus, liest das Ergebnis und gibt es über `%sysrput` an die lokale Sitzung zurück.
Kopiert!
1rsubmit;
2 
3 DATA _null_;
4 filename pip pipe "ksh -c %str(%')%bquote(. ~liu04/bin/myalias; PATH=/home/liu04/bin:/opt/sasprod:/usr/sbin:/etc:/usr/local/bin:/usr/bin:/bin:/usr/dt/bin:/usr/openwin/bin:/usr/ucb:.:/home/liu04/bin/perl;FPATH=/home/liu04/bin;)&rmycmd %str(%') " ;
5 INFILE pip truncover lrecl=32767;
6 LENGTH file $32767;
7 INPUT file 1-32767;
8 myfile=put(translate(file,"&rdlm",byte(12)),&rformat);
9 call symput("rpiperesult",trim(compbl(myfile)));
10 RUN;
11 %put lmacro=&lmacro;
12 %nrstr(%%)sysrput &lmacro=%nrbquote(&rpiperesult);
13endrsubmit;
3 Codeblock
MACRO UTILITY
Erklärung :
Lokale Nachbearbeitung des Ergebnisses: Bereinigung von Steuerzeichen und optionale Anzeige im Log.
Kopiert!
1%IF %LENGTH(&&&lmacro) %THEN %let &lmacro=%sysfunc(translate(&&&lmacro,%str( ),%sysfunc(byte(12))));
2 
3 
4%IF %upcase(&PRINT)=YES %THEN %put %nrbquote(&&&lmacro);
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.