Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Вход в сетевую папку под учётной записью и работа с ней, архивирование (http://forum.oszone.net/showthread.php?t=201691)

TERMINAL 11-03-2011 10:09 1632152

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

madmasles 11-03-2011 11:42 1632234

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

TERMINAL 11-03-2011 12:52 1632301

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

madmasles 11-03-2011 15:37 1632432

Цитата:

Цитата TERMINAL
даже в новом хелпе нет такой команды RunAs() »

В справке 3.3.6.1 она точно есть. RunAs, RunAsWait.
7-Zip

TERMINAL 12-03-2011 10:01 1633034

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

kaster 12-03-2011 10:41 1633056

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

TERMINAL 12-03-2011 10:44 1633060

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

kaster 12-03-2011 11:05 1633067

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

TERMINAL 12-03-2011 13:38 1633177

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

Цитата:

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

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

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

Цитата:

Цитата kaster
открыть справку по AutoIt и посмотреть команды архиватора »

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

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

kaster 12-03-2011 15:17 1633230

TERMINAL, мда... читать по всей видимости нет никакого желания. значит остается ждать, пока кто-нибудь сделает это за тебя.

TERMINAL 14-03-2011 09:57 1634418

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

centaurvv 14-03-2011 11:35 1634469

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

Код:

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, 0, $sProgram, $sPath, @SW_HIDE)

ProcessWaitClose($pid)

IniWrite ( "c:\Archives\arch.ini", "section1", "key1", "нужно ещё и в arhives.ini записать какое-то значение" )

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

TERMINAL 14-03-2011 12:01 1634481

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 1634500

TERMINAL, ты напрасно обижаешься. я не ставил себе это целью. но тебе 3 человека включая меня подсказали нужную команду
Код:

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

TERMINAL 14-03-2011 13:10 1634531

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 1634564

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

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

TERMINAL 14-03-2011 14:35 1634607

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 1634620

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

TERMINAL 14-03-2011 17:24 1634756

kaster, сорри, прошлое сообщение исправил на правильное

TERMINAL 07-04-2011 10:48 1652870

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


Время: 23:24.

Время: 23:24.
© OSzone.net 2001-