Archive for julho \31\UTC 2008|Monthly archive page

Script para pingar num range de IP

Entre com o ip inicial e final que ele gera uma lista de maquinas que responderam ao ping.

Obs:

Na linha 64 modifique o caminho do arquivo temporário;

Na 68 modifique o caminho do arquivo xls

‘º MultiPing.vbs v2.0 º
‘º º
‘º Script to ping a range of IP Addresses and º
‘º write results to an Excel Workbook º
‘º º
‘º Noel McGran (23/07/04) º

‘User Input of IP range
Message = “Please enter start IP:”
Title = “Start Range”
StartIP = InputBox(Message, Title)
xx = StartIP
Good = ValidIP(xx)

Do while Good = “invalid”
Message = StartIP & ” is not a valid IP.” & _
vbCrLf & “Please re-enter start IP:”
Title = “Start Range”
StartIP = InputBox(Message, Title)
xx = StartIP
Good = ValidIP(xx)
Loop

Message = “Please enter end IP:”
Title = “End Range”
EndIP = InputBox(Message, Title)
yy = EndIP
Good = ValidIP(yy)

Do while Good = “invalid”

Message = EndIP & ” is not a valid IP.” & _
vbCrLf & “Please re-enter end IP:”
Title = “End Range”
EndIP = InputBox(Message, Title)
yy = EndIP
Good = ValidIP(yy)
Loop

xx = StartIP
yy = EndIP

Good = GreaterIP(xx,yy)

Do while Good = “before”

Message = EndIP & ” is ” & Good & ” ” & StartIP _
& vbCrLf & “Please re-enter End IP:”
Title = “End Range”
EndIP = InputBox(Message, Title)
xx = StartIP
yy = EndIP
Good = GreaterIP(xx,yy)
Loop

msgText = “IP range is ” & StartIP & ” to ” & EndIP _
& vbCrLF & “Continue?”

Select Case MsgBox(msgText, VBOKCancel)

Case 1

TempFilename = “D:\Romeu\Scripts\tmp\IPtemp.txt”
notfound = “No Response”

‘ Spreadsheet file to be created.
strExcelPath = “D:\Romeu\Scripts\tmp\MultiPing.xls”

‘ Bind to Excel object.
Set objExcel = CreateObject(“Excel.Application”)

‘ Create a new workbook.
objExcel.Workbooks.Add

‘ Bind to worksheet.
Set objSheet = objExcel.ActiveWorkbook.Worksheets(1)
objSheet.Name = “Active IPs”

‘ Populate spreadsheet cells with user attributes.
objSheet.Cells(1, 1).Value = “IP Address”
objSheet.Cells(1, 2).Value = “Computer Name”

‘ Format the spreadsheet.
objSheet.Range(“A1:B1”).Font.Bold = True
objSheet.Select
objSheet.Range(“A2:B2”).Select
objExcel.ActiveWindow.FreezePanes = True
objExcel.Columns(1).ColumnWidth = 15
objExcel.Columns(2).ColumnWidth = 30

LF = chr(10)
const ForReading = 1, ForWriting = 2, ForAppending = 3

currentIP = StartIP
set shell = CreateObject (“wscript.shell”)
Set FS = CreateObject (“scripting.FileSystemObject”)

j = 2

Do

command = “cmd /C ping -a ” & currentIP & ” > ” _
& TempFilename
x = shell.run(command, 0, true)
set f = fs.OpenTextFile(tempfilename, ForReading, true)
fline = f.readline
fline = f.readline

l1 = instr (fline, ” “)
l2 = instr (fline, “[“)
if l2 = 0 then
mname = notfound
else
mname = mid (fline, l1, l2-l1)
end if

objSheet.Cells(j, 1).Value = currentIP
objSheet.Cells(j, 2).Value = mname

f.close
xx = currentIP
currentIP = newIP(xx)
j = j+1

Loop Until currentIP = EndIP

‘ process last IP
command = “cmd /C ping -a ” & currentIP & ” > ” _
& TempFilename
x = shell.run(command, 0, true)
set f = fs.OpenTextFile(tempfilename, ForReading, true)
fline = f.readline
fline = f.readline

l1 = instr (fline, ” “)
l2 = instr (fline, “[“)
if l2 = 0 then
mname = notfound
else
mname = mid (fline, l1, l2-l1)
end if

objSheet.Cells(j, 1).Value = currentIP
objSheet.Cells(j, 2).Value = mname

f.close

‘ Save the spreadsheet and close the workbook.
objExcel.ActiveWorkbook.SaveAs strExcelPath
objExcel.ActiveWorkbook.Close

‘ Quit Excel.
objExcel.Application.Quit

‘ Clean Up
Set objSheet = Nothing
Set objExcel = Nothing

wscript.echo “Done!”

Case 2
wscript.echo “Goodbye.”
Set objSheet = Nothing
Set objExcel = Nothing

End Select

‘————
‘function for increasing the IP number
‘————
function newip(xx)
dim n,n1,n2,n3,n4,v1,v2,v3,v4
n = 1
n0 = n

while mid (xx,n,1) “.”
n = n+1
wend

n1 = n
n = n+1

while mid (xx,n,1) “.”
n = n+1
wend

n2 = n
n = n+1

while mid (xx,n,1) “.”
n = n+1
wend

n3 = n
n4 = len(xx)
v1 = mid (xx,n0,n1-1)
v2 = mid (xx,n1+1,n2-n1-1)
v3 = mid (xx,n2+1,n3-n2-1)
v4 = mid (xx,n3+1,n4-n3)
v4 = v4+1

if v4 > 255 then
v3 = v3+1
v4 = 0
end if

if v3 > 255 then
v2 = v2+1
v3 = 0
v4 = 0
end if

if v2 > 255 then
v1 = v1+1
v2 = 0
v3 = 0
v4 = 0
end if

return = (v1 & “.” & v2 & “.” & v3 & “.” & v4)
newIP = return
end function

‘————
‘function for validating the IP address
‘————
function ValidIP(xx)

dim n,n0,n1,n2,n3,n4,v1,v2,v3,v4,s,s1,s2,s3,s4
n = 1
n0 = n
s = 1
return = “valid”

s1 = InStr(s, xx, “.”, 1)
s2 = InStr(s1+1, xx, “.”, 1)
s3 = InStr(s2+1, xx, “.”, 1)
s4 = len(xx)+1

if s1-s 3 then
return = “invalid”
elseif s2-s1 4 then
return = “invalid”
elseif s3-s2 4 then
return = “invalid”
elseif s4-s3 4 then
return = “invalid”
else
while mid (xx,n,1) “.”
n = n+1
wend

n1 = n
n = n+1

while mid (xx,n,1) “.”
n = n+1
wend

n2 = n
n = n+1

while mid (xx,n,1) “.”
n = n+1
wend

n3 = n
n4 = len(xx)
v1 = mid (xx,n0,n1-1)
v2 = mid (xx,n1+1,n2-n1-1)
v3 = mid (xx,n2+1,n3-n2-1)
v4 = mid (xx,n3+1,n4-n3)

if v4 > 255 then
return = “invalid”
end if

if v3 > 255 then
return = “invalid”
end if

if v2 > 255 then
return = “invalid”
end if

if v1 > 255 then
return = “invalid”
end if
end if

ValidIP = return

end function

‘————
‘function for validating the End IP address
‘————
function GreaterIP(aa,zz)

return = “after”

dim n,n0,n1,n2,n3,n4,v1,v2,v3,v4
dim m,m0,m1,m2,m3,m4,w1,w2,w3,w4

n = 1
n0 = n

while mid (xx,n,1) “.”
n = n+1
wend

n1 = n
n = n+1

while mid (xx,n,1) “.”
n = n+1
wend

n2 = n
n = n+1

while mid (xx,n,1) “.”
n = n+1
wend

n3 = n
n4 = len(xx)
v1 = mid (xx,n0,n1-1)
v2 = mid (xx,n1+1,n2-n1-1)
v3 = mid (xx,n2+1,n3-n2-1)
v4 = mid (xx,n3+1,n4-n3)

m = 1
m0 = m

while mid (yy,m,1) “.”
m = m+1
wend

m1 = m
m = m+1

while mid (yy,m,1) “.”
m = m+1
wend

m2 = m
m = m+1

while mid (yy,m,1) “.”
m = m+1
wend

m3 = m
m4 = len(yy)
w1 = mid (yy,m0,m1-1)
w2 = mid (yy,m1+1,m2-m1-1)
w3 = mid (yy,m2+1,m3-m2-1)
w4 = mid (yy,m3+1,m4-m3)

if cint(v1) > cint(w1) then
return = “before”
else
if cint(v2) > cint(w2) then
return = “before”
else
if cint(v3) > cint(w3) then
return = “before”
else
if cint(v4) > cint(w4) then
return = “before”
end if
end if
end if
end if

GreaterIP = return

end function

Já vazou o teaser trailer de X MAN ORIGINS – WOLVERINE

O video gravado por CAM das gravações já foi removido do youtube. Vou ficar de olho.

Ferramentas gratuitas de melhores praticas

Existem algumas ferramentas de melhores praticas disponibilizadas (de graça) pela Microsoft , segue algumas.
Basta instalar onde a aplicação está instalada, fazer a atualização e executa-la para a ferramenta gerar um relatório com recomendações para melhorar a aplicação..

Group Policy Diagnostic Best Practice Analyzer for Windows Server 2003
http://www.microsoft.com/downloads/details.aspx?FamilyID=47F11B02-8EE4-450B-BF13-880B91BA4566&displaylang=en

Microsoft Best Practices Analyzer para o SharePoint 2007
http://www.microsoft.com/downloads/details.aspx?familyid=cb944b27-9d6b-4a1f-b3e1-778efda07df8&displaylang=en

Microsoft Exchange Best Practices Analyzer v2.8
http://www.microsoft.com/downloads/details.aspx?familyid=dbab201f-4bee-4943-ac22-e2ddbd258df3&displaylang=en

Microsoft Internet Security and Acceleration (ISA) Server Best Practices Analyzer (BPA) Tool
http://www.microsoft.com/downloads/details.aspx?FamilyID=D22EC2B9-4CD3-4BB6-91EC-0829E5F84063&displaylang=en

Dica boa

A melhor coisa é ficar ouvindo a mulecada do trabalho, assim a gente descobre algumas novidades.
Eu particularmente não conhecia uma versão do squid para Windows.

Dei uma pesquisada na internet e descobri que ele usa o mesmo princípio da versão para Linux, ou seja, se você usa um arquivo conf em Linux pode aproveitá-lo em Windows, só alterando algumas linhas para o ambiente win32.
Exemplo: alterar /etc/squid/squid.conf para c:\squid\conf\squid.conf

Bem interessante pra galera que não tem condições de colocar um Proxy MS (ISA) e não que usar Linux.

Valeu pela dica Alvaro.

Achei este post do Peterson Raydan:
http://imasters.uol.com.br/artigo/4386/servidores_windows/utilizacao_do_squid_em_servidores_windows/

http://www.squid-cache.org/

Livro de WSH gratuito

A editora Novatec está disponobilizando gratuitamente o livro Windows Script Host – Guia de Consulta Rápida.

É um bom material de consulta.

http://www.novateceditora.com.br/ebooks/

Migrando para Windows 2008

Estamos com um projeto de migração de um cliente para Windows 2008.
Achei videos e tutoriais muito bons. Veja alguns links.
Dicas e Truques para Migração de Windows Server 2003 para Windows Server 2008
http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=pt-BR&EventID=1032368139&CountryCode=BR

Descubra quando e como fazer para migrar para Windows Server 2008
http://pcworld.uol.com.br/dicas/2008/04/29/descubra-quando-e-como-fazer-para-migrar-para-windows-server-2008/

Alguns argumentos do Danilo Bordini
Clique aqui

Citrix MetaFrame and Microsoft Terminal Server Performance Optimization and Tuning

Este é um artigo do Brian Madden (o cara é o foda do citrix)
Para fazer download deste white papper de 35 paginas acesse o link:

http://www.rtosoft.com/Enter.asp?ID=156

Se cadastre e faça o download:
Abaixo está a lista do conteúdo do artigo:

Troubleshooting Slow Logons
Understanding the Terminal Server Logon Process
Step 1. Isolate the Problem
Step 2. Check the Roaming Profile
Step 3. Identify Anything that Runs when a User Logs On
Check the Logon Script
Check the Registry
Check the Startup Folders
Dealing with Programs that Run at Logon Time
Step 4. Identify Other Activities that Take Place at Logon Time
Step 5. Trace the Debug Logs from the User Logon Process

Getting more Users on your Server
Choosing your Software Versions
Windows Version
Citrix MetaFrame Version
Memory
Real-World Memory Estimation
How Memory Usage works in Terminal Server environments
Determining whether you have Enough Physical Memory
Identifying Memory Leaks
Page File Usage
Changing the way Windows uses the Page File
Making the Page File Faster
Page File Sizing
Processor Usage
Tracking Processor Usage
Minimizing the Processor Impact of Applications
Hyperthreading with Intel Xeon Processors
Disk Usage
Addressing Disk Usage Bottlenecks
Server Network Usage
Addressing Network Bottlenecks
Kernel Memory Usage
Understanding how the Kernel Uses Memory
Evaluating your Windows 2000 Terminal Server for Kernel Memory Usage Problems
Implementing Kernel Memory Usage Changes on Windows 2000
Evaluating your Windows 2003 Terminal Server for Kernel Memory Usage Problems
Understanding BOOT.INI Kernel Memory Usage Switches
Registry Usage

Troubleshooting Erratic Spikes, Pauses and Hangs
Step 1. Search the Web for your Problem
Step 2. Update Service Packs, Hotfixes, and Drivers
Step 3. Launch the Performance Monitor MMC Snap-In
Look for applications that are taking up 100% of the processor
Dealing with Overzealous Applications
Look for Periods when Everything Goes to Zero

Overall Sluggishness and Lack of Responsiveness
Understanding Factors that Affect Network Performance
Resolving Network Bandwidth Issues
Hardware Network Bandwidth Shapers
Removing Traffic
Squeezing ICA and RDP
Resolving Network Latency Issues
Conclusion and Final Thoughts

fonte desta dica:
http://www.brianmadden.com/content/article/Citrix-MetaFrame-and-Microsoft-Terminal-Server-Performance-Optimization-and-Tuning-

Script em vbs gera uma lista dos usuários logados em qual computador

Esta semana precisei de um script que me mostrasse qual usuário estava logado em qual estação de trabalho da rede.
Pesquisando an internet achei este aqui no forum do Mark Minasi(é o cara do windão)
http://x220.minasi.com/forum/post.asp?method=TopicQuote&TOPIC_ID=3301&FORUM_ID=30
Você precisa criar um arquivo txt com as maquinas que você quer obter o resultado.
O script gera uma lista com os seguintes resultados.
hostname: Domain\username -> Encontrou o usuário
hostname: Host Unreachable -> Não encontrou o host
hostname: No user -> Não existe usuario logado atualmete.

Segue script abaixo.
Por favor não retire os créditos do desenvolvedor.

‘********************************************************************
‘* File: GetUser.vbs
‘* Created: November 2003
‘* Version 1.0
‘*
‘* Main Function: Retrieves current logged on user name for computer
‘* names from input file named compname.txt
‘* Results are written to a log file
‘*http://x220.minasi.com/forum/post.asp?method=TopicQuote&TOPIC_ID=3301&FORUM_ID=30
‘*
‘********************************************************************

Option Explicit

Dim sDate
Dim strTime
Dim strDate
Dim strDataIn ‘Input list from text file
Dim aryData ‘Array to hold input stream
Dim iCounter ‘Iterative loop counter
dim strOUT ‘Output file
Dim oWshShell ‘Windows shell script
Dim objFSO ‘Scripting File System
Dim objFile ‘Open text file
Dim strFilePath ‘Path to current directory
Dim strPCName ‘Computer names extracted for input file
Dim strRet

Set oWshShell = CreateObject(“WScript.Shell”)
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
strFilePath = objFSO.GetAbsolutePathName(“.”)

‘First step: read file into a variable
strDataIn = f_r(strFilePath & “\compname.txt”)

aryData = Split(strDataIn,vbCrLf) ‘ this creates an array

oWshShell.Popup Ubound(aryData) + 1 & ” Hosts/Addresses in list.” & Chr(13) & “User query is underway.”,2,”Notice”,64
sDate = Date
strTime = Now
StrDate = DatePart(“m”,sDate) & “.” & DatePart(“d”,sDate) & “.” & Hour(strTime) & “.” & Minute(strTime)
set strOUT = objFSO.CreateTextFile(strFilePath & “\UsernameResults.” & strDate & “.log”)

For iCounter = 0 to Ubound(aryData)
aryData(iCounter) = Trim(aryData(iCounter)) ‘ clean “white space”
strPCName = GetUsr(aryData(iCounter))
strOUT.Write aryData(iCounter) & “: ” & strRet & vbcrlf

Next

strOUT.Close

set strOUT = nothing
set objFSO = nothing

oWshShell.Popup “Processing complete.”,5,”Notice”,64

wscript.quit

‘********************************************************************************
‘* Function f_r(FilePath) *
‘* *
‘* Given the path to a file, this function will return entire contents *
‘* *
‘********************************************************************************

Function f_r(FilePath)
Dim FSO
set FSO = CreateObject(“Scripting.FileSystemObject”)

f_r = FSO.OpenTextFile(FilePath,1).ReadAll

End Function

Function GetUsr(strComputerName)

Dim WMIServices
Dim objUserSet
Dim User

WMIServices = “winmgmts:{impersonationLevel=impersonate}!//”& strComputerName &””

On Error Resume Next
Set objUserSet = GetObject( WMIServices ).InstancesOf (“Win32_ComputerSystem”)

If Err.number 0 Then

If Err.Number = “-2147217405” Then

strRet = “Access Denied”

ElseIf Err.Number = “462” Then

strRet = “Host Unreachable”

Else

strRet = “Computer does not respond. “

End If

Else

for each User in objUserSet

If User.UserName “” Then

strRet = User.UserName

Else

strRet = “No user”

End If

Next

End If

End Function

Como fazer backup do dhcp usando netsh

Netsh é um utilitário para elaborar scripts de linha de comando que permite, local e remotamente, exibir ou modificar a configuração de rede de um computador em execução no momento. O Netsh fornece também um recurso de script que permite executar um grupo de comandos no modo de lotes em um computador especificado. O Netsh também pode salvar um script de configuração em um arquivo de texto para fins de arquivamento ou para ajudar a configurar outros servidores.
fonte:
http://technet2.microsoft.com/windowsserver/pt-br/library/61427fbd-de1f-4c8a-b613-321f7a3cca6a1046.mspx?mfr=true

Exemplo da utilidade do comando netsh.
Se você precisa criar um simples backup do seu dhcp, é mais fácil fazer a cópia do modo tradicional. Botão direito > backup (w2k3).
mas se você precisa exportar de uma maquina e importar com algumas configurações personalizadas o netsh serve muito bem para isso,
Segue comando, logue o servidor dhcp e execute:
GERAR UM DUMP
start > run > cmd > netsh dhcp server dump > “caminho do arquivo.txt”

EXPORTAR AS CONFIGURAÇÕES DO DHCP
netsh dhcp server export > “caminho do arquivo” all

IMPORTAR AS CONFIGURAÇÕES DO DHCP
netsh dhcp server import > “caminho do arquivo” all

usei o “all” no final do comando pois estou especificando que quero um export de todos os escopos, se quisessem somente de um colocaria o nome dele no lugar do parâmetro “all”.