Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=8411977&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Tue Apr 12 12:51:54 2016
Кодировка: Windows-1251
прога удаленного форматирования по дате - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Hard&Soft (Archive)

Страницы: 1
Utug
Жгу

Рег.: 23.06.2005
Сообщений: 636
Рейтинг: 789
  прога удаленного форматирования по дате
      04.03.2009 09:16
-1

Задача - надо форматнуть хард удаленного компа в строго определенное время - говна там много скапливается в это время

Самому писать не хочется - может есть чего ?
Хотя конечно можно повесить в планировщик задание залить батничек туда и запустить - но вот хочется что то вроде скрипта ...

ayvango
ушастый

Рег.: 10.01.2006
Сообщений: 27731
Из: Воронеж
Рейтинг: 11831
  Re: прога удаленного форматирования по дате [re: Utug]
      04.03.2009 09:18
 

А тот комп PXE и Wake on Lan поддерживает?



Сеть темна и полна ужасов
Zoobastik
Комок меха

Рег.: 18.10.2003
Сообщений: 7460
Из: За спиной
Рейтинг: 4347
  Re: прога удаленного форматирования по дате [re: Utug]
      04.03.2009 09:30
 

Вешай в планировщик вот это с нужными параметрами и все
code:
'******************************************************************** '* '* File: Exec.Vbs '* Created: March 1999 '* Version: 1.0 '* '* Main Function: Executes a command. '* '* Exec.vbs [/e <Command> | /x <ProcessID>] [/S <server>] [/U <username>] [/W <password>] '* [/O <outputfile>] '* '* Copyright (C) 1999 Microsoft Corporation '* '******************************************************************** OPTION EXPLICIT 'Define constants CONST CONST_ERROR = 0 CONST CONST_WSCRIPT = 1 CONST CONST_CSCRIPT = 2 CONST CONST_SHOW_USAGE = 3 CONST CONST_EXECUTE = 4 CONST CONST_KILL = 5 'Declare variables Dim intOpMode, i, intProcessID Dim strServer, strUserName, strPassword, strOutputFile, strCommand 'Make sure the host is csript, if not then abort VerifyHostIsCscript() 'Parse the command line intOpMode = intParseCmdLine(strServer , _ strUserName , _ strPassword , _ strOutputFile , _ strCommand , _ intProcessID ) Select Case intOpMode Case CONST_SHOW_USAGE Call ShowUsage() Case CONST_EXECUTE Call ExecuteCmd(strServer , _ strOutputFile , _ strUserName , _ strPassword , _ strCommand ) Case CONST_KILL Call Kill(strServer , _ strOutputFile , _ strUserName , _ strPassword , _ intProcessID ) Case CONST_ERROR 'Do Nothing Case Else 'Default -- should never happen Call Wscript.Echo("Error occurred in passing parameters.") End Select '******************************************************************** '* '* Sub ExecuteCmd() '* '* Purpose: List the desktop properties on a system. '* '* Input: strServer a machine name '* strOutputFile an output file name '* strUserName the current user's name '* strPassword the current user's password '* strCommand a valid WBEM command '* '* Output: Results are either printed on screen or saved in strOutputFile. '* '******************************************************************** Private Sub ExecuteCmd(strServer , _ strOutputFile , _ strUserName , _ strPassword , _ strCommand ) ON ERROR RESUME NEXT Dim objFileSystem, objOutputFile, objService, objInstance Dim strQuery, strMessage Dim intProcessId, intStatus 'Open a text file for output if the file is requested If Not IsEmpty(strOutputFile) Then If (NOT blnOpenFile(strOutputFile, objOutputFile)) Then Call Wscript.Echo ("Could not open an output file.") Exit Sub End If End If 'Establish a connection with the server. If blnConnect("root\cimv2" , _ strUserName , _ strPassword , _ strServer , _ objService ) Then Call Wscript.Echo("") Call Wscript.Echo("Please check the server name, " _ & "credentials and WBEM Core.") Exit Sub End If strMessage = "" intProcessId = 0 Set objInstance = objService.Get("Win32_Process") If blnErrorOccurred(" occurred getting a " & _ " Win32_Process class object.") Then Exit Sub If objInstance is nothing Then Exit Sub intStatus = objInstance.Create(strCommand, null, null, intProcessId) If blnErrorOccurred(" occurred in creating process " & _ strCommand & ".") Then Exit Sub If intStatus = 0 Then If intProcessId < 0 Then '4294967296 is 0x100000000. intProcessId = intProcessId + 4294967296 End If strMessage = "Succeeded in executing " & strCommand & "." & vbCRLF strMessage = strMessage & "The process id is " & intProcessId & "." Else strMessage = "Failed to execute " & strCommand & "." & vbCRLF strMessage = strMessage & "Status = " & intStatus End If WriteLine strMessage, objOutputFile If IsObject(objOutputFile) Then objOutputFile.Close Call Wscript.Echo ("Results are saved in file " & strOutputFile & ".") End If End Sub '******************************************************************** '* '* Sub Kill() '* '* Purpose: Kills a process currently running on a machine. '* '* Input: strServer a machine name '* strOutputFile an output file name '* strUserName the current user's name '* strPassword the current user's password '* intProcessId id of the process to be killed '* '* Output: Results are either printed on screen or saved in strOutputFile. '* '******************************************************************** Private Sub Kill(strServer , _ strOutputFile , _ strUserName , _ strPassword , _ intProcessID ) ON ERROR RESUME NEXT Dim objFileSystem, objOutputFile, objService, objInstance Dim strWBEMClass, strMessage Dim intStatus 'Open a text file for output if the file is requested If Not IsEmpty(strOutputFile) Then If (NOT blnOpenFile(strOutputFile, objOutputFile)) Then Call Wscript.Echo ("Could not open an output file.") Exit Sub End If End If 'Establish a connection with the server. If blnConnect("root\cimv2" , _ strUserName , _ strPassword , _ strServer , _ objService ) Then Call Wscript.Echo("") Call Wscript.Echo("Please check the server name, " _ & "credentials and WBEM Core.") Exit Sub End If 'Now executes the method. If strServer = "" Then strWBEMClass = "Win32_Process.Handle=" & intProcessId Else strWBEMClass = "\\" & strServer & "\root\cimv2:Win32_Process.Handle=" _ & intProcessId End If Set objInstance = objService.Get(strWBEMClass) If blnErrorOccurred(" occurred in getting process " & strWBEMClass & ".") _ Then Exit Sub intStatus = objInstance.Terminate If intStatus = 0 Then strMessage = "Process " & intProcessId & " has been killed." Else strMessage = "Failed to kill process " & intProcessId & "." End If WriteLine strMessage, objOutputFile If IsObject(objOutputFile) Then objOutputFile.Close Call Wscript.Echo ("Results are saved in file " & strOutputFile & ".") End If End Sub '******************************************************************** '* '* Function intParseCmdLine() '* '* Purpose: Parses the command line. '* Input: '* '* Output: strServer a remote server ("" = local server") '* strUserName the current user's name '* strPassword the current user's password '* strOutputFile an output file name '* '******************************************************************** Private Function intParseCmdLine( ByRef strServer, _ ByRef strUserName, _ ByRef strPassword, _ ByRef strOutputFile, _ ByRef strCommand, _ ByRef intProcessID ) ON ERROR RESUME NEXT Dim strFlag Dim intState, intArgIter Dim objFileSystem If Wscript.Arguments.Count > 0 Then strFlag = Wscript.arguments.Item(0) End If 'Check if the user is asking for help or is just confused If (strFlag="help") OR (strFlag="/h") OR (strFlag="\h") OR (strFlag="-h") _ OR (strFlag = "\?") OR (strFlag = "/?") OR (strFlag = "?") _ OR (strFlag="h") Then intParseCmdLine = CONST_SHOW_USAGE Exit Function End If 'Retrieve the command line and set appropriate variables intArgIter = 0 Do While intArgIter <= Wscript.arguments.Count - 1 Select Case Left(LCase(Wscript.arguments.Item(intArgIter)),2) Case "/s" If Not blnGetArg("Server", strServer, intArgIter) Then intParseCmdLine = CONST_ERROR Exit Function End If intArgIter = intArgIter + 1 Case "/o" If Not blnGetArg("Output File", strOutputFile, intArgIter) Then intParseCmdLine = CONST_ERROR Exit Function End If intArgIter = intArgIter + 1 Case "/u" If Not blnGetArg("User Name", strUserName, intArgIter) Then intParseCmdLine = CONST_ERROR Exit Function End If intArgIter = intArgIter + 1 Case "/w" If Not blnGetArg("User Password", strPassword, intArgIter) Then intParseCmdLine = CONST_ERROR Exit Function End If intArgIter = intArgIter + 1 Case "/e" intPArseCMdLine = CONST_EXECUTE If Not blnGetArg("Command", strCommand, intArgIter) Then intParseCmdLine = CONST_ERROR Exit Function End If intArgIter = intArgIter + 1 Case "/x" intPArseCMdLine = CONST_KILL If Not blnGetArg("ProcessID", intProcessID, intArgIter) Then intParseCmdLine = CONST_ERROR Exit Function End If intArgIter = intArgIter + 1 Case Else 'We shouldn't get here Call Wscript.Echo("Invalid or misplaced parameter: " _ & Wscript.arguments.Item(intArgIter) & vbCRLF _ & "Please check the input and try again," & vbCRLF _ & "or invoke with '/?' for help with the syntax.") Wscript.Quit End Select Loop '** intArgIter <= Wscript.arguments.Count - 1 If IsEmpty(intParseCmdLine) Then _ intParseCmdLine = CONST_ERROR End Function '******************************************************************** '* '* Sub ShowUsage() '* '* Purpose: Shows the correct usage to the user. '* '* Input: None '* '* Output: Help messages are displayed on screen. '* '******************************************************************** Private Sub ShowUsage() Wscript.Echo "" Wscript.Echo "Executes a command." Wscript.Echo "" Wscript.Echo "SYNTAX:" Wscript.Echo " Exec.vbs [/e <Command> | /x <ProcessID>]" Wscript.Echo " [/S <server>] [/U <username>]" _ &" [/W <password>]" Wscript.Echo " [/O <outputfile>]" Wscript.Echo "" Wscript.Echo "PARAMETER SPECIFIERS:" Wscript.Echo " command A valid command. " _ & "(The entire command string must" Wscript.Echo " be enclosed in quotes if " _ & "it contains empty spaces.)" Wscript.Echo " ProcessID The Number of a currently running Process." Wscript.Echo " server A machine name." Wscript.Echo " username The current user's name." Wscript.Echo " password Password of the current user." Wscript.Echo " outputfile The output file name." Wscript.Echo "" Wscript.Echo "EXAMPLE:" Wscript.Echo "1. cscript Exec.vbs /e notepad /s MyMachine2" Wscript.Echo " Starts notepad on MyMachine2." Wscript.Echo "2. cscript Exec.vbs /x 2112" Wscript.Echo " Kills process 2112 on the local machine." Wscript.Echo "" Wscript.Echo "Note:" Wscript.Echo " Use ps.vbs to obtain process ID numbers" Wscript.Echo "" End Sub '******************************************************************** '* General Routines '******************************************************************** '******************************************************************** '* '* Function strPackString() '* '* Purpose: Attaches spaces to a string to increase the length to intWidth. '* '* Input: strString a string '* intWidth the intended length of the string '* blnAfter Should spaces be added after the string? '* blnTruncate specifies whether to truncate the string or not if '* the string length is longer than intWidth '* '* Output: strPackString is returned as the packed string. '* '******************************************************************** Private Function strPackString( ByVal strString, _ ByVal intWidth, _ ByVal blnAfter, _ ByVal blnTruncate) ON ERROR RESUME NEXT intWidth = CInt(intWidth) blnAfter = CBool(blnAfter) blnTruncate = CBool(blnTruncate) If Err.Number Then Call Wscript.Echo ("Argument type is incorrect!") Err.Clear Wscript.Quit End If If IsNull(strString) Then strPackString = "null" & Space(intWidth-4) Exit Function End If strString = CStr(strString) If Err.Number Then Call Wscript.Echo ("Argument type is incorrect!") Err.Clear Wscript.Quit End If If intWidth > Len(strString) Then If blnAfter Then strPackString = strString & Space(intWidth-Len(strString)) Else strPackString = Space(intWidth-Len(strString)) & strString & " " End If Else If blnTruncate Then strPackString = Left(strString, intWidth-1) & " " Else strPackString = strString & " " End If End If End Function '******************************************************************** '* '* Function blnGetArg() '* '* Purpose: Helper to intParseCmdLine() '* '* Usage: '* '* Case "/s" '* blnGetArg ("server name", strServer, intArgIter) '* '******************************************************************** Private Function blnGetArg ( ByVal StrVarName, _ ByRef strVar, _ ByRef intArgIter) blnGetArg = False 'failure, changed to True upon successful completion If Len(Wscript.Arguments(intArgIter)) > 2 then If Mid(Wscript.Arguments(intArgIter),3,1) = ":" then If Len(Wscript.Arguments(intArgIter)) > 3 then strVar = Right(Wscript.Arguments(intArgIter), _ Len(Wscript.Arguments(intArgIter)) - 3) blnGetArg = True Exit Function Else intArgIter = intArgIter + 1 If intArgIter > (Wscript.Arguments.Count - 1) Then Call Wscript.Echo( "Invalid " & StrVarName & ".") Call Wscript.Echo( "Please check the input and try again.") Exit Function End If strVar = Wscript.Arguments.Item(intArgIter) If Err.Number Then Call Wscript.Echo( "Invalid " & StrVarName & ".") Call Wscript.Echo( "Please check the input and try again.") Exit Function End If If InStr(strVar, "/") Then Call Wscript.Echo( "Invalid " & StrVarName) Call Wscript.Echo( "Please check the input and try again.") Exit Function End If blnGetArg = True 'success End If Else strVar = Right(Wscript.Arguments(intArgIter), _ Len(Wscript.Arguments(intArgIter)) - 2) blnGetArg = True 'success Exit Function End If Else intArgIter = intArgIter + 1 If intArgIter > (Wscript.Arguments.Count - 1) Then Call Wscript.Echo( "Invalid " & StrVarName & ".") Call Wscript.Echo( "Please check the input and try again.") Exit Function End If strVar = Wscript.Arguments.Item(intArgIter) If Err.Number Then Call Wscript.Echo( "Invalid " & StrVarName & ".") Call Wscript.Echo( "Please check the input and try again.") Exit Function End If If InStr(strVar, "/") Then Call Wscript.Echo( "Invalid " & StrVarName) Call Wscript.Echo( "Please check the input and try again.") Exit Function End If blnGetArg = True 'success End If End Function '******************************************************************** '* '* Function blnConnect() '* '* Purpose: Connects to machine strServer. '* '* Input: strServer a machine name '* strNameSpace a namespace '* strUserName name of the current user '* strPassword password of the current user '* '* Output: objService is returned as a service object. '* strServer is set to local host if left unspecified '* '******************************************************************** Private Function blnConnect(ByVal strNameSpace, _ ByVal strUserName, _ ByVal strPassword, _ ByRef strServer, _ ByRef objService) ON ERROR RESUME NEXT Dim objLocator, objWshNet blnConnect = False 'There is no error. 'Create Locator object to connect to remote CIM object manager Set objLocator = CreateObject("WbemScripting.SWbemLocator") If Err.Number then Call Wscript.Echo( "Error 0x" & CStr(Hex(Err.Number)) & _ " occurred in creating a locator object." ) If Err.Description <> "" Then Call Wscript.Echo( "Error description: " & Err.Description & "." ) End If Err.Clear blnConnect = True 'An error occurred Exit Function End If 'Connect to the namespace which is either local or remote Set objService = objLocator.ConnectServer (strServer, strNameSpace, _ strUserName, strPassword) ObjService.Security_.impersonationlevel = 3 If Err.Number then Call Wscript.Echo( "Error 0x" & CStr(Hex(Err.Number)) & _ " occurred in connecting to server " _ & strServer & ".") If Err.Description <> "" Then Call Wscript.Echo( "Error description: " & Err.Description & "." ) End If Err.Clear blnConnect = True 'An error occurred End If 'Get the current server's name if left unspecified If IsEmpty(strServer) Then Set objWshNet = CreateObject("Wscript.Network") strServer = objWshNet.ComputerName End If End Function '******************************************************************** '* '* Sub VerifyHostIsCscript() '* '* Purpose: Determines which program is used to run this script. '* '* Input: None '* '* Output: If host is not cscript, then an error message is printed '* and the script is aborted. '* '******************************************************************** Sub VerifyHostIsCscript() ON ERROR RESUME NEXT Dim strFullName, strCommand, i, j, intStatus strFullName = WScript.FullName If Err.Number then Call Wscript.Echo( "Error 0x" & CStr(Hex(Err.Number)) & " occurred." ) If Err.Description <> "" Then Call Wscript.Echo( "Error description: " & Err.Description & "." ) End If intStatus = CONST_ERROR End If i = InStr(1, strFullName, ".exe", 1) If i = 0 Then intStatus = CONST_ERROR Else j = InStrRev(strFullName, "\", i, 1) If j = 0 Then intStatus = CONST_ERROR Else strCommand = Mid(strFullName, j+1, i-j-1) Select Case LCase(strCommand) Case "cscript" intStatus = CONST_CSCRIPT Case "wscript" intStatus = CONST_WSCRIPT Case Else 'should never happen Call Wscript.Echo( "An unexpected program was used to " _ & "run this script." ) Call Wscript.Echo( "Only CScript.Exe or WScript.Exe can " _ & "be used to run this script." ) intStatus = CONST_ERROR End Select End If End If If intStatus <> CONST_CSCRIPT Then Call WScript.Echo( "Please run this script using CScript." & vbCRLF & _ "This can be achieved by" & vbCRLF & _ "1. Using ""CScript Exec.vbs arguments"" for Windows 95/98 or" _ & vbCRLF & "2. Changing the default Windows Scripting Host " _ & "setting to CScript" & vbCRLF & " using ""CScript " _ & "//H:CScript //S"" and running the script using" & vbCRLF & _ " ""Exec.vbs arguments"" for Windows NT/2000." ) WScript.Quit End If End Sub '******************************************************************** '* '* Sub WriteLine() '* Purpose: Writes a text line either to a file or on screen. '* Input: strMessage the string to print '* objFile an output file object '* Output: strMessage is either displayed on screen or written to a file. '* '******************************************************************** Sub WriteLine(ByVal strMessage, ByVal objFile) On Error Resume Next If IsObject(objFile) then 'objFile should be a file object objFile.WriteLine strMessage Else Call Wscript.Echo( strMessage ) End If End Sub '******************************************************************** '* '* Function blnErrorOccurred() '* '* Purpose: Reports error with a string saying what the error occurred in. '* '* Input: strIn string saying what the error occurred in. '* '* Output: displayed on screen '* '******************************************************************** Private Function blnErrorOccurred (ByVal strIn) If Err.Number Then Call Wscript.Echo( "Error 0x" & CStr(Hex(Err.Number)) & ": " & strIn) If Err.Description <> "" Then Call Wscript.Echo( "Error description: " & Err.Description) End If Err.Clear blnErrorOccurred = True Else blnErrorOccurred = False End If End Function '******************************************************************** '* '* Function blnOpenFile '* '* Purpose: Opens a file. '* '* Input: strFileName A string with the name of the file. '* '* Output: Sets objOpenFile to a FileSystemObject and setis it to '* Nothing upon Failure. '* '******************************************************************** Private Function blnOpenFile(ByVal strFileName, ByRef objOpenFile) ON ERROR RESUME NEXT Dim objFileSystem Set objFileSystem = Nothing If IsEmpty(strFileName) OR strFileName = "" Then blnOpenFile = False Set objOpenFile = Nothing Exit Function End If 'Create a file object Set objFileSystem = CreateObject("Scripting.FileSystemObject") If blnErrorOccurred("Could not create filesystem object.") Then blnOpenFile = False Set objOpenFile = Nothing Exit Function End If 'Open the file for output Set objOpenFile = objFileSystem.OpenTextFile(strFileName, 8, True) If blnErrorOccurred("Could not open") Then blnOpenFile = False Set objOpenFile = Nothing Exit Function End If blnOpenFile = True End Function '******************************************************************** '* * '* End of File * '* * '********************************************************************


integer
overflow

Рег.: 26.04.2006
Сообщений: 6765
Из: Эльфсборг
Рейтинг: 3235
  Re: прога удаленного форматирования по дате [re: Zoobastik]
      04.03.2009 18:46
 

Или в случае никсов набрать от рута::
code:
# at 11:00pm mkreiserfs /dev/sda1 ^D


Idle
+++

Рег.: 30.11.2002
Сообщений: 7806
Рейтинг: 1198
  Re: прога удаленного форматирования по дате [re: integer]
      04.03.2009 19:04
 

Y кто нажмет?

ЗЫ
>никсов
>mkreiserfs

не ври, да?


penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: прога удаленного форматирования по дате [re: Idle]
      04.03.2009 19:10
 

В ответ на:

Y кто нажмет?



Кстати, а
echo Y |mkreiserfs /dev/sda1
не сработает?



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
maloi
Зануда

Рег.: 09.05.2006
Сообщений: 6506
Из: $(pwd)
Рейтинг: 2880
  Re: прога удаленного форматирования по дате [re: penartur2]
      04.03.2009 20:14
 

>echo Y |mkreiserfs /dev/sda1


yes |mkreiserfs /dev/sda1 тогда уж.
опыт показывает что срабатывает echo y, но не Y


Hope that the day after you die is a nice day.



Помни: убив анимешника, ты повышаешь скорость сети на 5%
integer
overflow

Рег.: 26.04.2006
Сообщений: 6765
Из: Эльфсборг
Рейтинг: 3235
  Re: прога удаленного форматирования по дате [re: Idle]
      05.03.2009 01:58
 

Quote:

ЗЫ
>никсов
>mkreiserfs

не ври, да?



Почему не придрался к тому, что sda?
Во фре надо примерно так будет написать.
newfs /dev/ad3s1a

У меня просто появилось желание показать насколько проще в никсах это сделать. Конкретные команды естесственно варьируются, но суть та же.

Страницы: 1

Technical >> Hard&Soft (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  exc, muse, Riamella, KAA 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в