PDA

Показать полную графическую версию : Проверка доступности сетевой папки


74_pilot_74
23-02-2015, 20:21
Доброго времени суток. Возникла следующая задача: нужно проверить доступность сетевой папки (Например: 10.80.1.1\shared).
Я думаю проверять доступность, созданием файла 10.80.1.1\shared\log.txt, а затем его удаление.
Если не сложно, напишите код скрипта, буду благодарен за любую помощь.

Iska
23-02-2015, 20:40
if exist "\\10.80.1.1\shared\." (
echo Доступна
) else (
echo Не доступна
)

74_pilot_74
23-02-2015, 20:50
Может в курсе кто, необходимо размонтировать контейнер в программе TrueCrype. Смонтированный на диск Z.
Нашел пример TrueCrypt /q /dz, но не работает.

74_pilot_74
24-02-2015, 12:38
Если кому интересно, то вот... контейнер монтируется, если сетевая папка доступна. И демонтируется, как доступ до папки пропадает.

@Echo Off
if not exist "\\10.80.1.10\shared" (
if exist "Z:" (
"C:\Program Files\TrueCrypt\TrueCrypt.exe" /q /s /d Z
)

) else (
if not exist "Z:" (
"C:\Program Files\TrueCrypt\TrueCrypt.exe" /q /lZ "C:\12.tc" /k "\\10.80.1.10\logs\1.png"
)
)

Andrey_Vladimirovich
02-05-2019, 01:55
Добрый день.

Имеется проблема с проверкой доступности сетевой папки. Исходные тестовые данные такие. К Wi-Fi роутеру подключена флешка с NTFS и настроен доступ по Samba по аккаунту. Подключение, отключение и проверку произвожу с CMD-файла запущенного в уже открытом окне командной строки из ограниченной учётной записи в Win 10 Pro x64 Ru и Win 7 Ult x64 Ru (это два разных «железных» компьютера подключенных к роутеру по кабелю и ситуация у них одинаковая).
После успешного отключения от сетевой папки (сообщается «успешно удален.»), проверка показывает, что доступ есть. При этом, если не закрывая окна командной строки закомментировать строчку в CMD-файле с установкой соединения и запустить его повторно, то тот же код по проверке наличия доступа к папке показывает, что доступа нет. Изначально доступ к сетевой папке проверял через создаваемую папку и файл в ней после отключения от сетевой папки. Результат был такой же.
Привожу полностью код тестового CMD-файла и результат его работы (логин и пароль я заменил).
И, соответственно, вопрос — в чём ошибка и как это исправить?


Echo On

Rem Выставляем кодовую страницу "Кириллица OEM 866".
CHCP 866

Rem Включение расширенной обработки команд (EnableExtensions)
Rem и отложенного расширения переменных среды (EnableDelayedExpansion)
SetLocal EnableExtensions EnableDelayedExpansion

Set "Check=Empty"

Net.exe Use "\\192.168.1.1\Test" "Пароль" /User:"Логин" /persistent:no

TimeOut.exe /T 2

Net.exe Use "\\192.168.1.1\Test" /delete

TimeOut.exe /T 2

Net.exe Use "\\192.168.1.1\Test" /delete

TimeOut.exe /T 2

Echo %Check%

If Exist "\\192.168.1.1\Test\." (
Set "Check=Y"
) Else (
Set "Check=N"
)

Echo %Check%




Test.cmd

Echo On

Rem Выставляем кодовую страницу "Кириллица OEM 866".

CHCP 866
Текущая кодовая страница: 866

Rem Включение расширенной обработки команд (EnableExtensions)

Rem и отложенного расширения переменных среды (EnableDelayedExpansion)

SetLocal EnableExtensions EnableDelayedExpansion

Set "Check=Empty"

Net.exe Use "\\192.168.1.1\Test" "Пароль" /User:"Логин" /persistent:no
Команда выполнена успешно.


TimeOut.exe /T 2

Время ожидания 0 сек., нажмите любую клавишу для продолжения ...

Net.exe Use "\\192.168.1.1\Test" /delete
\\192.168.1.1\Test успешно удален.


TimeOut.exe /T 2

Время ожидания 0 сек., нажмите любую клавишу для продолжения ...

Net.exe Use "\\192.168.1.1\Test" /delete
Не удалось найти сетевое подключение.

Для вызова дополнительной справки наберите NET HELPMSG 2250.


TimeOut.exe /T 2

Время ожидания 0 сек., нажмите любую клавишу для продолжения ...

Echo Empty
Empty

If Exist "\\192.168.1.1\Test\." (Set "Check=Y" ) Else (Set "Check=N" )

Echo Y
Y





Test.cmd

Echo On

Rem Выставляем кодовую страницу "Кириллица OEM 866".

CHCP 866
Текущая кодовая страница: 866

Rem Включение расширенной обработки команд (EnableExtensions)

Rem и отложенного расширения переменных среды (EnableDelayedExpansion)

SetLocal EnableExtensions EnableDelayedExpansion

Set "Check=Empty"

TimeOut.exe /T 2

Время ожидания 0 сек., нажмите любую клавишу для продолжения ...

Net.exe Use "\\192.168.1.1\Test" /delete
Не удалось найти сетевое подключение.

Для вызова дополнительной справки наберите NET HELPMSG 2250.


TimeOut.exe /T 2

Время ожидания 0 сек., нажмите любую клавишу для продолжения ...

Net.exe Use "\\192.168.1.1\Test" /delete
Не удалось найти сетевое подключение.

Для вызова дополнительной справки наберите NET HELPMSG 2250.


TimeOut.exe /T 2

Время ожидания 0 сек., нажмите любую клавишу для продолжения ...

Echo Empty
Empty

If Exist "\\192.168.1.1\Test\." (Set "Check=Y" ) Else (Set "Check=N" )

Echo N
N

Busla
02-05-2019, 11:26
вопрос — в чём ошибка и как это исправить? »
ошибка в подходе и смешивании понятий

SMB не предназначен для сессионного использования, к тому же /delete по определению (https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb490717(v=technet.10)) - ненадёжное средство, т.к. не рвёт используемые соединения. Хотите ограниченный доступ - используйте другой протокол, либо заведите отдельного пользователя и от его имени запускайте скрипт (и больше ничего).

Andrey_Vladimirovich
02-05-2019, 15:15
Busla
правильно ли я понимаю, что пока работает запущенный CMD-файл, нет возможности отключиться от подключённой сетевой папки и, соответственно, команда "/delete" и не должна работать, несмотря на её предназначение?

Anatoliy.Reader
16-06-2021, 19:15
Busla, SMB не предназначен для сессионного использования, к тому же /delete по определению - ненадёжное средство, т.к. не рвёт...

Уважаемый, Вы уверены?! Чем Вас не устраивает, например:
net use |find " character:" >nul && net use character: /d || net use character: \\serverName\shareName userPassword /user:userName /persistent:no
Это обычный триггер. Остаётся только вопрос применения...

Andrey_Vladimirovich, правильно ли я понимаю, <...> нет возможности отключиться...
Нет. Вопрос времени, затрачиваемого на выполнение команды. К тому же в Вашем примере включение расширенной обработки команд и отложенного расширения переменных среды не обязательны.

alpap
16-06-2021, 19:25
Anatoliy.Reader, думаю, спустя уж более 2-х лет, им это или уже не надо или давно нашли решение.

Andrey_Vladimirovich
17-06-2021, 18:59
Andrey_Vladimirovich,
Цитата:
правильно ли я понимаю, <...> нет возможности отключиться...
Нет. Вопрос времени, затрачиваемого на выполнение команды. »

И как же это сделать, есть решение?




© OSzone.net 2001-2012