PDA

View Full Version : AS400 Ordner als Netzlaufwerk verbinden



ensöianer
17-12-13, 12:25
Hallo liebes Forum,

wir haben hier ein kleines-großes Problem.

Auf unserer AS400(V7) ist im IFS ein Ordner, (Pfad: root/usr/sap/freigegebenerOrdner ) abgelegt und freigegeben. Wenn wir jetzt versuchen diesen mittels Console unter Windows 7 mit "net use J: \\Server\freigegebenerOrdner" zu verbinden fragt er einen Benutzer(von AS400) ab. Diesen geben wir dann ein und bekommen einen Systemfehler 5 als Rückmeldung, obwohl der Benutzer auf der AS400 QSECOFR ist. Wie kann das sein und wo könnte das Problem liegen?

Hat hier jemand eine Idee?

Gruß ensöianer

Fuerchau
17-12-13, 12:33
Ggf. setzt Windows mal wieder den Domänennamen vor den User, wenn man keine angibt.
Gib als User "Systemname\Username" an, dann sollte es gehen.

Ansonsten noch über die iSeriesNavigator->Netserver->gesperrte Profiile überprüfen.

ensöianer
17-12-13, 12:44
Danke für die schnelle Antwort!

Systemname vor Username bringt leider ebenfalls Systemfehler 5.

Hat der Netserver evtl. einen anderen Namen? oder wie finde ich diesen?
gesucht habe ich unter "Netzwerk->Server->TCP/IP"

Die Lösung des Problems waren tatsächlich die gesperrten Profile. Diese haben wir jetzt wieder aktiviert.

Kann man es verhindern, dass die Profile deaktiviert werden? bzw. wieso werden diese deaktiviert?

Fuerchau
17-12-13, 13:25
Nein, die Deaktivierung passiert nach den selben Methoden wie mit den Userprofilen.
Allerdings reicht eine Aktivierung des USRPRF's nicht aus, da dies nicht an den NetServer weitergereicht wird.
Wer weiß, vielleicht kennt ja irgendwer das API dazu.

malzusrex
17-12-13, 13:27
Deaktiviert werden die, durch fehlerhafte Kennworteingaben.
Wenn dies geschieht, sollte im Systemlog eigentlich ein Eintrag auftauchen.


Gruß
Ronald

JanItor
23-12-14, 09:45
Hier gibt es kein Danke Button, oder?

Der Thread hat auch mein Problem gelöst.

hel400
25-12-14, 08:09
Guten Morgen,
hier das API (in Cl-Pgm) für die Reaktivierung eines gesperrten IFS-Zugriffes:

PGM PARM(&USRPRF)

DCL VAR(&USRPRF) TYPE(*CHAR) LEN(10)
DCL VAR(&RQSVAR) TYPE(*CHAR) LEN(14)
DCL VAR(&RQSLEN) TYPE(*INT) VALUE(14)

CHGVAR VAR(&RQSVAR) VALUE(' ' *CAT &USRPRF)
CHGVAR VAR(%BINARY(&RQSVAR 1 4)) VALUE(&RQSLEN)
CALL PGM(QSYS/QZLSCHSI) PARM(&RQSVAR &RQSLEN +
ZLSS0200 X'00000000')

ENDPGM

holgerscherer
25-12-14, 11:57
Hier gibt es kein Danke Button, oder?

Der Thread hat auch mein Problem gelöst.

Doch, man kann die Beiträge bewerten. Das ganze Thema oben über dem ersten Beitrag, oder bei jedem einzelnen Beitrag unten links das Sternchen :)

-h

prsbrc
26-01-15, 13:05
Auch wenn aufgewärmt nur Gulasch schmeckt:
Ich durfte vor kurzem ein Programm schreiben welches als ASJ in einem Subsystem läuft und die gesperrten Benutzerprofile wieder freigibt.
Falls es jemand braucht dann darf es gerne kopiert werden ;-)



H DFTACTGRP(*NO) ACTGRP(*NEW) DATFMT(*ISO) DECEDIT('0,')
H DEBUG(*YES) USRPRF(*OWNER) BNDDIR('QC2LE')


*################################################# ########################
* definitions
*################################################# ########################

* program status data structure

* datatypes --------------------------------------------------------------
D TRUE S N INZ(*ON)
D FALSE S N INZ(*OFF)
D INLR S * INZ(%ADDR(*INLR))
D ExitProgram S N BASED(INLR)

* program prototype ------------------------------------------------------
D RLSNSURG PR

* imported prototypes ----------------------------------------------------

* imported prototypes (dynamic)
D System PR 10I 0 EXTPROC('system')
D * VALUE OPTIONS(*STRING)

D LstSvrInf PR EXTPGM('QZLSOLST')
D RcvVar 32767A OPTIONS(*VARSIZE)
D RcvVarLen 10I 0 CONST
D LstInf 64A
D FmtNam 10A CONST
D InfQual 15A CONST
D Error 32767A OPTIONS(*VARSIZE)
D SsnUsr 10A CONST OPTIONS(*NOPASS )
D SsnId 20I 0 CONST OPTIONS(*NOPASS )

D ChgSvrInf PR EXTPGM('QZLSCHSI')
D CsRqsVar 32767A CONST OPTIONS(*VARSIZE)
D CsRqsVarLen 10I 0 CONST
D CsFmtNam 10A CONST
D CsError 32767A OPTIONS(*VARSIZE)

D RtvJobInf PR EXTPGM('QUSRJOBI')
D RcvVar 32767A OPTIONS(*VARSIZE)
D RcvVarLen 10I 0 CONST
D FmtNam 8A CONST
D JobNamQ 26A CONST
D JobIntId 16A CONST
D Error 32767A OPTIONS(*NOPASS:*VARSIZE)

D SndPgmMsg PR EXTPGM('QMHSNDPM')
D MsgId 7A CONST
D MsgFq 20A CONST
D MsgDta 128A CONST
D MsgDtaLen 10I 0 CONST
D MsgTyp 10A CONST
D CalStkE 10A CONST OPTIONS(*VARSIZE)
D CalStkCtr 10I 0 CONST
D MsgKey 4A
D Error 32767A OPTIONS(*VARSIZE)

* local prototypes

* global variables -------------------------------------------------------
D Loop S N INZ(*ON)
D i S 10I 0 INZ(*ZERO)
D MsgKey S 4A INZ(*BLANK)
D Msg C ' >> Aktiviere Benutzer: '

D API_ErrorDS DS QUALIFIED
D Err_BytesPrv 10I 0 INZ(%SIZE(API_ErrorDS))
D Err_BytesAvl 10I 0
D Err_MsgID 7A
D Err_Reserved 1A
D Err_MsgDta 256A

D ZLSS0200 Ds QUALIFIED
D NbrSvrUsr 10I 0 INZ(*ZERO)
D NetSvrUsr 10A DIM(1)

D ZLSL0900 DS QUALIFIED
D DsaNetUsr 10A DIM(128)

D JOBI0400 DS QUALIFIED
D BytRtn 10I 0
D BytAvl 10I 0
D JobNam 10A
D UsrNam 10A
D JobNbr 6A
D JobIntId 16A
D JobSts 10A
D JobTyp 1A
D JobSubTyp 1A

D LstInf DS QUALIFIED
D RcdNbrTot 10I 0
D RcdNbrRtn 10I 0
D RcdLen 10I 0
D InfLenRtn 10I 0
D InfCmp 1A
D Dts 13A
D 34A


*################################################# ########################
* program interface definition & global keys
*################################################# ########################

D RLSNSURG PI

*################################################# ########################
* main program
*################################################# ########################

RtvJobInf(JOBI0400:%Size(JOBI0400):'JOBI0400':'*': *BLANK:API_ErrorDS);

DoW ( Loop );
// Deaktivierte Benutzer suchen und reaktivieren
LstSvrInf( ZLSL0900:%Size(ZLSL0900):LstInf:
'ZLSL0900':*BLANK:API_ErrorDS);
If ( API_ErrorDS.Err_BytesAvl=*ZERO );
For i=1 To LstInf.RcdNbrTot;
ZLSS0200.NbrSvrUsr=1;
ZLSS0200.NetSvrUsr(1)=ZLSL0900.DsaNetUsr(i);
ChgSvrInf(ZLSS0200:%Size(ZLSS0200):'ZLSS0200': API_ErrorDS);
SndPgmMsg('CPF9897':'QCPFMSG *LIBL':Msg+ZLSL0900.DsaNetUsr(i):
%Len(Msg+ZLSL0900.DsaNetUsr(i)):'*DIAG':'*PGMBDY': 1:
MsgKey:API_ErrorDS);
EndFor;
EndIf;

// Falls Batch dann Loop sonst ENDE
If ( JOBI0400.JobTyp='I' );
Leave;
Else;
System('DLYJOB DLY(60)');
Iter;
EndIf;
EndDo;

ExitProgram=TRUE;
Return;


309