CMD/BAT - Проверка доступности сетевой папки

Ответить
Аватара пользователя
74_pilot_74

CMD/BAT - Проверка доступности сетевой папки

Сообщение 74_pilot_74 »

Доброго времени суток. Возникла следующая задача: нужно проверить доступность сетевой папки (Например: 10.80.1.1\shared).

Я думаю проверять доступность, созданием файла 10.80.1.1\shared\log.txt, а затем его удаление.

Если не сложно, напишите код скрипта, буду благодарен за любую помощь.
Аватара пользователя
74_pilot_74

Re: CMD/BAT - Проверка доступности сетевой папки

Сообщение 74_pilot_74 »

Код:

Код: Выделить всё

if exist "\\10.80.1.1\shared\." (
    echo Доступна
) else (
    echo Не доступна
)
Аватара пользователя
74_pilot_74

Re: CMD/BAT - Проверка доступности сетевой папки

Сообщение 74_pilot_74 »

Может в курсе кто, необходимо размонтировать контейнер в программе TrueCrype. Смонтированный на диск Z.

Нашел пример TrueCrypt /q /dz, но не работает.
Аватара пользователя
74_pilot_74

Re: CMD/BAT - Проверка доступности сетевой папки

Сообщение 74_pilot_74 »

Если кому интересно, то вот... контейнер монтируется, если сетевая папка доступна. И демонтируется, как доступ до папки пропадает.



@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

Re: CMD/BAT - Проверка доступности сетевой папки

Сообщение Andrey_Vladimirovich »

Добрый день.



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

После успешного отключения от сетевой папки (сообщается «успешно удален.»), проверка показывает, что доступ есть. При этом, если не закрывая окна командной строки закомментировать строчку в CMD-файле с установкой соединения и запустить его повторно, то тот же код по проверке наличия доступа к папке показывает, что доступа нет. Изначально доступ к сетевой папке проверял через создаваемую папку и файл в ней после отключения от сетевой папки. Результат был такой же.

Привожу полностью код тестового CMD-файла и результат его работы (логин и пароль я заменил).

И, соответственно, вопрос — в чём ошибка и как это исправить?





Код CMD-файла

[spoiler]Код:
[/spoiler]

Код: Выделить всё

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%











Результат работы CMD-файла

[spoiler]Код:
[/spoiler]

Код: Выделить всё

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

Re: CMD/BAT - Проверка доступности сетевой папки

Сообщение Busla »

Цитата Andrey_Vladimirovich:



вопрос — в чём ошибка и как это исправить?
CMD/BAT - Проверка доступности сетевой папки




ошибка в подходе и смешивании понятий



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

Re: CMD/BAT - Проверка доступности сетевой папки

Сообщение Andrey_Vladimirovich »

Busla

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

Re: CMD/BAT - Проверка доступности сетевой папки

Сообщение Andrey_Vladimirovich »

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

Re: CMD/BAT - Проверка доступности сетевой папки

Сообщение alpap »

Anatoliy.Reader, думаю, спустя уж более 2-х лет, им это или уже не надо или давно нашли решение.
Аватара пользователя
Andrey_Vladimirovich

Re: CMD/BAT - Проверка доступности сетевой папки

Сообщение Andrey_Vladimirovich »

Цитата Anatoliy.Reader:



Andrey_Vladimirovich,

Цитата:

правильно ли я понимаю, нет возможности отключиться...

Нет. Вопрос времени, затрачиваемого на выполнение команды.
CMD/BAT - Проверка доступности сетевой папки




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

Вернуться в «Скриптовые языки администрирования Windows»