With all this talk of HA solutions I thought I'd share our solution for
initiating a Windows DNS change from IBM i.
Quick-EDD uses "switch scenarios". These are scripts. Comparable to BRMS
control groups. However do not think this is a function of Quick-EDD as I
used this same technique with Mimix when we ran that.
Way down in the one script I have
Seq. Command to execute
610 ADDLIBLE LIB(ROUTINES) POSITION(*LAST)
620 SETDNS SERVER(GDISYS) FROMIP('10.10.6.129') TOIP('10.27.6.129')
...
ROUTINES is our utility library.
If you prompt our SETDNS you will see
Server . . . . . . . . . . . . . SERVER
From IP . . . . . . . . . . . . FROMIP
To IP . . . . . . . . . . . . . TOIP
User Id . . . . . . . . . . . . RMTUSER 'qsecofr'
Password . . . . . . . . . . . . RMTPWD <redacted>
We often use CHGCMDDFT on it to keep the password updated. Yes QSECOFR
also exists in Windows, with a matching password.
SETDNS is a RPGLE program.
SETDNS talks to an intermediary PC. Something about our security does not
allow IBM i remote commands to work on our servers but IBM i security will
work on Windows clients who can then talk to Windows servers.
// Check intermediary with a ping
if $chkIntermediary();
// Check that Intermediary is accepting remote commands
if $chkRMTcmd();
// Delete 'from' DNS entry
//callp $delIP(domain1:inSvr:inIP1);
callp $delIP(domain2:inSvr:inIP1);
// If called without second parm, the program is in delete
// mode where a test entry has been used, and now needs
// to be deleted.
if %addr(inIP2)<>*null;
// Add the 'to' DNS entry
//callp $addIP(domain1:inSvr:inIP2);
callp $addIP(domain2:inSvr:inIP2);
endif;
endif;
endif;
Here's a snippet from $addIP
callp $CvtDomain(Domain:Svr:inDomain:InSvr);
cmd='RUNRMTCMD CMD('''
+ 'C:\PSTools\psexec \\' + DNSsvr
+ ' -u ' + UsrDomain + '\' + %trim(InUserId)
+ ' -p ' + %trim(InPassword)
+ ' -h c:\Windows\System32\DNSCMD.EXE ""'+ DNSsvr
+ ' /recordadd ' + Domain + ' ' + Svr
+ ' 600 A ' + IP + '""'')'
+ ' RMTLOCNAME(''' + Intermediary +''' *IP)'
+ ' RMTUSER(' + %trim(InUserId) +') RMTPWD('
+ %trim(InPassword) + ')';
callp QCMDEXC(cmd:%len(cmd));
The big clues from this snippet are:
look for pstools and psexec on the internet
Also notice the dnscmd.exe
I have a licensing issue with my Rational going on right now and the
coworker I want to help me with it is on a day off so I may post to
code.midrange.com later.
Rob Berendt
As an Amazon Associate we earn from qualifying purchases.