Batch List shared netnames on a server

List shared netnames on a server

/* List shared netnames on a server */

call RxFuncAdd 'LoadLsRxutFuncs', 'LSRXUT', 'LoadLsRxutFuncs'
call LoadLsRxutFuncs

NETSERVER = 160
NETSHARE  = 190
SrvType   = -1  /* All servers */

parse upper arg SrvName DomainName dummy "/"pause
if SrvName = '' then call Syntax
if left( SrvName, 2 ) <> '\\' then do
	DomainName = SrvName
	SrvName    = ''
end
if left( pause, 1 ) = "P" then do
	pause = 1
	parse value SysTextScreenSize( ) with rows cols
end
else do
	pause = 0
end

myRc = NetEnumerate(NETSERVER, 'serverList', SrvName, SrvType, DomainName)
if myRc <> '0' then do
	say 'Got error from NetEnumerate() ' myRc
	exit 9
end

if serverList.0 = 0 then do
	say 'Domain controller was not found'
	exit 0
end

call SysCls
say
say 'Number of servers found: ' serverList.0

k = 0
do i=1 to serverList.0
	say
	say
	say serverList.i
	myRc = NetEnumerate(NETSHARE, 'shareInfo', '\\'serverList.i)
	if myRc <> '0' then do
		say 'Got error from NetEnumerate() ' myRc
		exit 9
	end
	if shareInfo.1 = 0 then do
		say 'Server does not share a resource'
		exit 0
	end
	say 'Number of shared netnames: ' shareInfo.0
	say
	do j=1 to shareInfo.0
		myRc = NetGetInfo(NETSHARE, 'shareInfoX', '\\'serverList.i, shareInfo.j)
/*
		myRc = NetGetInfo(NETSHARE, 'shareInfoX', SrvName, shareInfo.j)
*/
		if myRc <> '0' then do
			say 'Got error from NetGetInfo() ' myRc
			exit 9
		end
		say
		say '    Network name        :  ' shareInfoX.netname
		say '    Share type          :  ' shareInfoX.type
		say '    Comment             :  ' shareInfoX.remark
		say '    Local resource path :  ' shareInfoX.path
		if pause = 1 then call PauseIfNeeded
	end
end
if k > 0 then call PauseIfNeeded 'Exit'
EXIT 0


PauseIfNeeded:
	param = strip( translate( arg( 1 ) ) )
	parse value SysCurPos( ) with x y
	k = k + 1
	if x > rows - 8 | param = 'EXIT' then do
		call SysCurPos rows - 3, 0
		say 'Press any key . . .'
		call SysCurState 'OFF'
		call SysGetKey 'NOECHO'
		if param <> "EXIT" then do
			call SysCls
			say
			say 'Number of servers found: ' serverList.0
			say
			say
			say serverList.i
			say 'Number of shared netnames: ' shareInfo.0
			say
		end
		k = 0
	end
return


Syntax: procedure
	say
	say 'Usage: NETSHARE [ \\server_name ] [ domain_name ] [ /Pause ]'
	say
	exit 1
return