PDA

Показать полную графическую версию : [решено] Вход в сетевую папку под учётной записью и работа с ней, архивирование


TERMINAL
11-03-2011, 10:09
Добрый день !
1. Возможно ли выполнять скриптом вход на расшаренные ресурсы, именно для юзера (Test01) c паролем (12345), что бы потом работать с архивами ?
2. Сушествует ли тихий архиватор, который бы не отображал саму архивацию (итак будет понятно скрипту что он закончил архивировать после RunWait), желательно со степенью сжатия и с возможностью установки пароля.

madmasles
11-03-2011, 11:42
TERMINAL,
1. RunAs() + читать консольный вывод, RunAsWait()?
2. Консольный 7-Zip.

TERMINAL
11-03-2011, 12:52
madmasles, у меня, дело в том, что даже в новом хелпе нет такой команды RunAs(), а только описание старой команды RunAsSet-может ссылочку подкинешь?
На счёт консольного 7-Zip-я так и не нашёл ключа который бы не отображал происходящее-может подскажешь?
А для административных шар (такие как $C) RunAs() тоже подойдёт?

madmasles
11-03-2011, 15:37
даже в новом хелпе нет такой команды RunAs() »В справке 3.3.6.1 она точно есть. RunAs (http://www.autoitscript.com/autoit3/docs/functions/RunAs.htm), RunAsWait (http://www.autoitscript.com/autoit3/docs/functions/RunAsWait.htm).
7-Zip (http://7-zip.org.ua/ru/)

TERMINAL
12-03-2011, 10:01
madmasles, а пример есть какой-нибудь ? Например как скопировать файл с помощью RunAs() или узнать-есть файл или нет?

kaster
12-03-2011, 10:41
TERMINAL, ты случаем не используешь русскую справку? если так, то выкинь ее и возьми новую (правда на английском) со свежего дистрибутива. если проблемы с языком, гугл транслейт тебе в помощь

TERMINAL
12-03-2011, 10:44
kaster, madmasles, С помощью RunAs() возможно не только запускать но и копировать файлы по сети ? Если да-подкиньте любой примерчик плз.

kaster
12-03-2011, 11:05
TERMINAL, твои вопросы наводят меня на странные мысли. Run и RunAs - это всего лишь обертки для запуска других программ. Второй позволяет сделать это под другим пользователем. Примеры в справке. Ты хочешь чтобы тебе их сюда скопировали? Если тебе надо работать с архивом, то тебе так же подсказали бесплатный консольный архиватор, и раз тебе его подсказали, значит он умеет ходить по расшаренным ресурсам по UMC именам (который типа \\machinename\foldername). тебе остается только глянуть на параметры ком. строки для 7-Zip и запустить его из под пользователя Test01. если тебе лень открыть справку по AutoIt и посмотреть команды архиватора, то так скажи. честность - не самое дурное качество, знаешь ли. может кто возьмется и сделает это за тебя

TERMINAL
12-03-2011, 13:38
kaster, Может я неправильно тему изложил или описание к ней, но лень тут ни причём...
Суть такая:
1. Есть расшареная папка на сервере. К этой папке имеет только доступ пользователь (к примеру, с учётной записью TEST01 и паролем 123). Мне нужно с помощью AutoIt зайти (к примеру, на \\192.168.100.1\TEMPS) под пользователем TEST01 и скопировать папку к себе на комп \\192.168.100.1\TEMPS\022011 для дальшейшей архивации.

Если тебе надо работать с архивом, то тебе так же подсказали бесплатный консольный архиватор, и раз тебе его подсказали, значит он умеет ходить по расшаренным ресурсам по UMC именам (который типа \\machinename\foldername). тебе остается только глянуть на параметры ком. строки для 7-Zip и запустить его из под пользователя Test01 »
Использую давно консольный режим 7-Zip:
а. Неполучается спрятать любыми ключами консольный режим архивации-тоесть сделать её тихой.
б. В справке по 7-Zip невтречал ключи которые позволяют ходить по расшаренным ресурсам по UMC именам типа \\machinename\foldername при использовании учётной записи и пароля.

2. После того как будет скопирована папка \\192.168.100.1\TEMPS\022011 на мой ком, нужно ещё и в arhives.ini записать значение.

открыть справку по AutoIt и посмотреть команды архиватора »
Можете назвать хоть одну команду AutoIt для архиватора, чтобы почитать?

P.S. Проще говоря, с помощью AutoIt я смогу авторизироваться на сетевом ресурсе и потом работать с ним? Если да, подскажите хотябы команду или функцию.

kaster
12-03-2011, 15:17
TERMINAL, мда... читать по всей видимости нет никакого желания. значит остается ждать, пока кто-нибудь сделает это за тебя.

TERMINAL
14-03-2011, 09:57
kaster, да и так уже разжевал как только мог, а с вашей стороны только наезды читаю и не одной толковой команды-просьба больше тут не отписываться (всеровно говорим на разных языках и не о чём)...

centaurvv
14-03-2011, 11:35
Что-то типа такого получилось, маэстро, подправьте, если что не так :)


Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $sUserName = "Username"
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $sDomain = @ComputerName (http://www.autoitscript.com/autoit3/docs/macros.htm#@computername)
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $sPassword = "Password"
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $sProgram = '"C:\Program Files\7-Zip\7z.exe" a "c:\Archives\arch.zip" "\\192.168.100.1\TEMPS\022011\"'
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $sPath = "C:\Program Files\7-Zip\"


Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $pid = RunAsWait (http://www.autoitscript.com/autoit3/docs/functions/RunAsWait.htm)($sUserName, $sDomain, $sPassword, 0, $sProgram, $sPath, @SW_HIDE (http://www.autoitscript.com/autoit3/docs/macros.htm#@sw_hide))

ProcessWaitClose (http://www.autoitscript.com/autoit3/docs/functions/ProcessWaitClose.htm)($pid)

IniWrite (http://www.autoitscript.com/autoit3/docs/functions/IniWrite.htm) ( "c:\Archives\arch.ini", "section1", "key1", "нужно ещё и в arhives.ini записать какое-то значение" )




Все, как по учебнику... :)

TERMINAL
14-03-2011, 12:01
centaurvv, Спс конечно большое что откликнулся... С командой RunAsWait() я то уже разобрался и если действие выполняется по сети то тогда правильнее будет :
Local $pid = RunAsWait($sUserName, $sDomain, $sPassword, 2, $sProgram, $sPath, @SW_HIDE)
Но а как потом сделать, к примеру, IniWrite ( "\\192.168.100.1\TEMPS\arch.ini", "section1", "key1", "выполнено" ) ? Ведь после выполнения RunAsWait() авторизация пользователя пропадает !?

kaster
14-03-2011, 12:24
TERMINAL, ты напрасно обижаешься. я не ставил себе это целью. но тебе 3 человека включая меня подсказали нужную команду
RunAsWait
просто в последнем посте тебе это явно написали, включив ключи для архиватора. хотя судя по твоим словам, ты и так это понял.
ну а по поводу второй части твоей просьбы, ты, заметь, ни разу не упомянул, что ini-файл находится на шаре. то есть твоя задача меняется на лету, что не очень хорошо.
на вскидку, могу предложить копировать файл через xcopy. делать изменения, а потом обратно на шару. xcopy - входит в WindowsXP и выше и умеет ходить по UNC-путям. нужные ключи погугли.
для скрытия окна консоли (если я правильно понял смысл выражения тихое архивирование, и вообще все "тихое") установи флаг show_flag для команд RunAs и RunAsWait в значение @SW_HIDE.

TERMINAL
14-03-2011, 13:10
kaster, centaurvv, Всем спасибо, вроде разобрался (а скорее всего догадался), нужно было всего после выполнения RunAsWait(), к примеру, IniWrite ( "\\192.168.100.1\TEMPS\arch.ini", "section1", "key1", "выполнено" ) тоже заключать как Local !:
Local $sUserName = "Username"
Local $sDomain = @ComputerName
Local $sPassword = "Password"
Local $sProgram = '"C:\Program Files\7-Zip\7z.exe" a "c:\Archives\arch.zip" "\\192.168.100.1\TEMPS\022011\"'
Local $sPath = "C:\Program Files\7-Zip\"


Local $pid = RunAsWait($sUserName, $sDomain, $sPassword, 2, $sProgram, $sPath, @SW_HIDE)

ProcessWaitClose($pid)

Local $pid2=IniWrite ( "\\192.168.100.1\TEMPS\arch.ini", "section1", "key1", "нужно ещё и в arhives.ini записать какое-то значение" )

kaster
14-03-2011, 13:52
TERMINAL, твоя интерпретация команд - неверна.
Local - никак не влияет на права доступа. и в данном скрипте наличие этого ключевого слова излишне. если ты смог записать данные, то тут несколько вариантов
1. твоя шара на самом деле доступна для любых юзеров
2. запуск программ с авторизацией имеют память и сохраняют авторизацию до окончания работы скрипта (это требует проверки)

и еще, заключай, плз, код в тэги

TERMINAL
14-03-2011, 14:35
kaster, Если я по сети после выполнения
Local $pid = RunAsWait($sUserName, $sDomain, $sPassword, 2, $sProgram, $sPath, @SW_HIDE)
делаю просто
IniWrite ( "\\192.168.100.1\TEMPS\arch.ini", "section1", "key1", "нужно ещё и в arhives.ini записать какое-то значение" )
тогда не срабатывает, а если делаю
Local $pid2=IniWrite ( "\\192.168.100.1\TEMPS\arch.ini", "section1", "key1", "нужно ещё и в arhives.ini записать какое-то значение" )
то срабатывает, почему тогда так?

kaster
14-03-2011, 14:45
TERMINAL, сложно сказать. ты приводишь не те коды которые "срабатывают" или "не срабатывают". приведи полный, или хотя бы работоспособный код с теми вариантами которые работают и которые нет. в любом случае, то что пространство имен не может играть роли - это точно. для справки, iniwrite - всего лишь возвращает 1 в случае успеха, и 0 - неудачи и не важно, в каком scoop'е он находится. локальном или глобальном.

TERMINAL
14-03-2011, 17:24
kaster, сорри, прошлое сообщение исправил на правильное

TERMINAL
07-04-2011, 10:48
kaster, Опять в тупик попал... мне нужно, к примеру, получить данные с помощью IniRead по поти административных шар - \\192.168.10.2\D$\test.ini... Как здесь правильно использовать команду RunAsWait ?




© OSzone.net 2001-2012