Jaký skript použít místo bat?

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

zeus
Elite Level 10.5
Elite Level 10.5
Příspěvky: 11144
Registrován: 16 úno 2012 10:56
Bydliště: Pankrac

Re: Jaký skript použít místo bat?

Příspěvek od zeus »

atari píše:Použití funkce „cint“ už tady ukázal zeus. Už jsme na to přišel. Objekt „GetFileSIze“ prostě VBScript nepodporuje.
Nejde o cint, mel jsi to cele blbe. GetFileSize opravdu neumi, sam jsi na to odkazoval.
Z prikladu jsi to pochopil?
Prazaci jo ty se maj, az kdyz si me zavolaj..
Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3377
Registrován: 24 říj 2008 19:50

Re: Jaký skript použít místo bat?

Příspěvek od atari »

Jo jasně, už jsem to pochopil. Vlastnosti musím získávat jinak, než jsem to dělal. Dík za rady.
Uziv00

Re: Jaký skript použít místo bat?

Příspěvek od Uziv00 »

Musíš si zvyknout na objekty.
Abys mohl pracovat se soubory, musíš mít objekt pro tuto práci: objFSO.
Abys mohl číst vlastnosti souboru, nebo s ním dále pracovat, musíš vytvořit objekt daného souboru: objFile
A chceš-li znát vlastnost určeného souboru, načteš vlastnost objektu: objFile.Size
A bude ještě hůř - třeba u práce s WMI po vytvoření objektů ještě načteš kolekci, z ní získáš na základě sql dotazu určenou službu a k ní vytvoříš objekt. Až pak ji můžeš ovládat.
vypadá to složitě, ale má to logiku.
Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3377
Registrován: 24 říj 2008 19:50

Re: Jaký skript použít místo bat?

Příspěvek od atari »

S těmi objekty jsem to už pochopil, popsal jsi to jednoduše a stručně.
Ale WMI neznán, nevím co to je (asi to pro moji prácí není potřeba). Co jsou kolekce zhruba tuším (například více stejných objektů sdružených do kolekce), ale nikdy jsem s nimi nepracoval. SQL dotazy také neznám, a nevím co to je.

Jak jsem psal, BAT dávky přestaly být postačujicí, takže hledám výkonnější nástroj. Moje zaměření je zálohování a archivace, takže tam objekty rozhodně budu potřebovat znát (soubory, složky, oddíly) a to ostatní nevím. Uvidíme do budoucna, jestli mě potkají kolekce nebo to další.
Uziv00

Re: Jaký skript použít místo bat?

Příspěvek od Uziv00 »

WMI=Windows Management Instrumentation.
Pro editaci v příkazové řádce stačí napsat příkaz wmic. Hned uvidíš, jak se konzola hlásí.
Ve spolupráci s vbs hodně silná věc. Používám pro kontrolu a spouštění (ukončování) služeb, kontrolu volného místa na disku, automatizaci záloh logů, kontrolu posledního restartu a dalších blbin.
samotný vbs používám pro rozbor logů, kdy mi z celého log souboru vyfiltruje klíčová slova a celé řádky s nimi zapíše do jiného, čímž mi ušetří hodně práce.
Ostatně některé mé skripty můžeš najít i zde na fóru.
Oxxid
člen BSOD týmu
Příspěvky: 6194
Registrován: 07 pro 2012 19:16

Re: Jaký skript použít místo bat?

Příspěvek od Oxxid »

atari píše:S těmi objekty jsem to už pochopil, popsal jsi to jednoduše a stručně.
Ale WMI neznán, nevím co to je (asi to pro moji prácí není potřeba). Co jsou kolekce zhruba tuším (například více stejných objektů sdružených do kolekce), ale nikdy jsem s nimi nepracoval. SQL dotazy také neznám, a nevím co to je.

Jak jsem psal, BAT dávky přestaly být postačujicí, takže hledám výkonnější nástroj. Moje zaměření je zálohování a archivace, takže tam objekty rozhodně budu potřebovat znát (soubory, složky, oddíly) a to ostatní nevím. Uvidíme do budoucna, jestli mě potkají kolekce nebo to další.
Ja jsem jedine pro PowerShell, je to dospely a moderni skriptovaci jazyk a zvladne vicemene vsechno.
Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3377
Registrován: 24 říj 2008 19:50

Re: Jaký skript použít místo bat?

Příspěvek od atari »

Uvidíme do budoucna jak to dopadne. PowerShell asi zvítězí. Na druhou stranu nějaký testovací vbs můžu poslat kámošovi ať ho spustí, když se bude řešit nějaký problém, a v mejlu se podívám se na výsledek logu. Tohle by s PowerShellem zřejmě neprošlo.

ITCrowd: na tu konzoli jsem koukal, a je tam mnoho příkazů. Skoro žádný neznám. Můžeš mi prosím sdělit například se kterým příkazem pracuješ při kontroloe a spouštění služeb?
Uziv00

Re: Jaký skript použít místo bat?

Příspěvek od Uziv00 »

PowerShell je samozřejmě nej. Jenže už to bude tak 4. skriptovací jazyk, který se budu muset naučit - a zatím nemám kdy :-(
Zde je příklad ve vbs. Skript je spouštěn po startu PC s právy SYSTEM (aby mohl startovat službu).
Ber to jako příklad pro začátek, dnes už to mám řešeno jinak. Zároveň je zde ukázáno, jak může skript zapisovat do logu.
Za zmínku stojí i to, že si sám zjistí název počítače - to z důvodu, aby mohl běžet na všech pracovištích a nebylo ho nutno pro každé pracoviště speciálně upravovat.

Kód: Vybrat vše

'**********************************
'*  Script testuje stav služby    *
'*             Phone              *
'*  Pokud služba neběží, pokusí   *
'*    se ji spustit (6x)          *
'*     Zapisuje do logu           *
'*   D:\ScriptLog\tstsrv.txt      *
'*     Etienn@Script v. 2.0       *
'**********************************
'
Option Explicit
Dim strComputer, objWMIService, a, colRunningServices, objService, fso
Dim WshNet, txtStream, radek, ForAppend
Const LogFile = "D:\ScriptLog\tstsrv.txt"
ForAppend = 8
' nastavení objektů k přístupu k síti a souboru'
Set WshNet = WScript.CreateObject("WScript.Network")
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

' Zápis prvního řádku do logu
Set txtStream = fso.OpenTextFile(LogFile, ForAppend, True)
radek = "Start systému -  " & WeekdayName(Weekday(Now()), False, 1) & _
", " & Date & ", " & Time
txtStream.WriteLine ""
txtStream.WriteLine radek
' zápis sítě do logu
txtStream.WriteLine Time & vbTab & WshNet.ComputerName
WScript.Sleep 25000 ' počáteční zpoždění
On Error Resume Next ' nereaguj na chyby
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
a = 1
Do Until a = 6
Set colRunningServices = objWMIService.ExecQuery("Select * from Win32_Service Where Name = 'Phone'")
For Each objService in colRunningServices 
    ' Wscript.Echo objService.DisplayName  & VbTab & objService.State
    txtStream.WriteLine Time & vbTab & WshNet.ComputerName
    txtStream.WriteLine Time & vbTab & objService.DisplayName  & VbTab & objService.State & vbTab & a & ". pokus"
    If objService.State <> "Running" Then 
       ' WScript.Echo "Neběží"  
       objService.StartService
    Else 
       ' WScript.Echo "Běží"
       Exit Do
    End If 
Next
a = a + 1
WScript.Sleep 6000
Loop
txtStream.Close
Set objWMIService = Nothing
Set fso = Nothing
Set WshNet = Nothing
Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3377
Registrován: 24 říj 2008 19:50

Re: Jaký skript použít místo bat?

Příspěvek od atari »

Dík za tip, prostuduji.

Ještěm mám dotaz na nějaký konvertor vbs to exe. Našel jsem jich několik (free i pay), ale nevím který je spolehlivý bez chyb. Potřebuji zamezit, aby si kdokoli mohl přečíst ve skritpu hesla. Nebo máš jinou radu jak to udělat?
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7408
Registrován: 23 pro 2010 09:23

Re: Jaký skript použít místo bat?

Příspěvek od faraon »

Jako že přímo ve skriptu máš hesla v plaintextu? To ale budou vidět i v tom EXE, ne?
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uziv00

Re: Jaký skript použít místo bat?

Příspěvek od Uziv00 »

Bezpečnostní zásada je nikdy hesla ve skriptu nemít. Kompilace do exe tohle řeší.
Výborný nástroj pro práci s vbs je VbsEdit, který v placené verzi umožňuje i kompilaci.
U skriptů nekompilovaných používám řešení dvou polí. V prvním poli jsou náhodně vygenerovaná čísla + správná čísla. Správná čísla tvoří ASCII kód písmen hesla. V druhém poli jsou souřadnice správných čísel v prvním poli. Pomocí dvojité For Next je proveden výběr jednotlivých čísel, která se pomocí funkce Chr() převedou na text hesla. Stejně tak pracuji i se jménem uživatele. Příklad můžeš ještě zesložitit třeba operací XOR, kdy správné číslo dostaneš XOR operací nad prvky ze dvou polí atd. Fantazii se meze nekladou :D
Pozor na kompilátory, které řeší kompilaci do exe tak, že vlastní skript rozbalí do TEMP a odtud spustí. Pokud by zkušený uživatel v této chvíli sestřelil wscript.exe, nebo postačí když je vyžadována reakce a on neodpoví, pak lze skript v tempu nalézt a heslo získáš normálně v textové podobě.
Podobně jsme se spálili s jedním kompilátorem battoexe, který to takhle dělal, a my se pak nestačili divit.
Uživatelský avatar
atari
Level 6
Level 6
Příspěvky: 3377
Registrován: 24 říj 2008 19:50

Re: Jaký skript použít místo bat?

Příspěvek od atari »

Přesně tak holý text. Pakuju data v ARJ a jelikož to posílám na Dropbox apod, tak to pakuju pod heslem. Při konverzi bat to exe když zadám kompresi, tak to v tom exe vidět není. To mě nenapadly ty TEMPY, to se schválně podívám.

VbsEdit jsem včera stáhnul, a mám teď tu "otravnou" free verzi. Tak doufám, že ta placená to nerozbaluje do TEMP.

U těch nekompilovaných, to je dobrý nápad. Ale kdo umí programovat tak si to bude umět rozkódovat to heslo, když ten skript dostane do ruky, přepodkládám.
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Jak použít zálohu z CodePen na ChatGPT?
    od Minapark » » v Programování a tvorba webu
    1 Odpovědi
    3711 Zobrazení
    Poslední příspěvek od Minapark
  • P: poslední místo ve Spotify
    od Karrex » » v P: Software
    0 Odpovědi
    9277 Zobrazení
    Poslední příspěvek od Karrex
  • Zapojení grafické karty na 12 pinů místo 14
    od WinDroid » » v Rady s výběrem hw a sestavením PC
    4 Odpovědi
    4874 Zobrazení
    Poslední příspěvek od WinDroid

Zpět na „Programování a tvorba webu“