• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Обработка файлов, не работает Kill

  • Автор темы Gor
  • Дата начала
G

Gor

Всем доброго дня!

есть небольшой скрипт:

Код:
Dim doc1 As NotesDocument
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument	
Set db = session.CurrentDatabase	

Const pathName$ = "\\server1\tmp\"


filename$ = Dir$(pathName$,0)

Do While filename$ <> ""		


idFile% = FreeFile()

Open pathName$ & filename$ For Input As idFile Len = 512 


Do While Not EOF(idFile%)
Line Input #idFile%, ID
Line Input #idFile%, Subject
Loop


Close #idfile

Kill pathName$ & filename$

fileName$ = Dir$()

Loop

смысл в том чтобы разобрать файл, сделать какие то действия, закрыть его и удалить.

Но почему то на строчке Kill pathName$ & filename$ срывается в ошибку - File\Path access error
Хотя на эту папку права даны Everyone - Full Control...
Скрипт я запускаю под собой, прописал права на папку принудительно ещё себя, не помогает...

Если после запуска скрипта я зайду в эту папку - то без проблем его удаляю руками

Где же грабли?
 
A

Akupaka

Вероятно, килл не работает с сетевым путем. Юзай апи или яву (если она умеет).
А еще можно попробовать батник запускать на удаление нужного файла, правда, не помню умеет ли цмдшка убивать сетевые файлы.
 
G

Gor

Файл не залочен... после отработки скрипта я же его удаляю спокойно сам ручками... Да и утилиту натравливал wholockedfile - всё пусто...

Да и Лотус по идее файл лочить не должен, я же его перед Kill-ом закрываю...

Вот больше склоняюсь к тому, что Kill действительно видимо не работает с сетевыми путями... Хотя как то странно - Dir, MkDir итд работают а Kill нет...


CMD-шкой можно сделать, уже думал такой вариант и работать будет, но хочется делать это из кода всётаки.

А с помощью API не у кого нет примера на удаление файла? Или в ссылку ткните? чёто ненагуглил((
 
G

Gor

и на API не хочет=)))))))))))

Код:
Declare Function DeleteFile Lib "kernel32.dll" Alias "DeleteFileA" (ByVal lpFileName As String) As Long


s = Replace(pathName$&filename1$,"\","\\")

rez = DeleteFile(s) 
rez = DeleteFile(pathName$&filename1$) 

If rez = 1 Then MsgBox "Файл удален"

зараза какая то...

Заработало.

Вот с таким путём работает

\\сервер\c$\tmp\

Видимо Kill не работает с расшаренными папками...



У меня по ходу дела назрел ещё один вопрос:

Предположим, если я хочу чтобы Лотус проверял какую либо папку каждую минуту.
Насколько я знаю в Шедуллерных агентах периодичность запуска минимум 5 минут.

Как настроить так, чтобы агент запускался каждую минуту и смотрел появились ли там файлы или нет, ну и соответственно если появились, то выполнять какие нибудь действия?
 
G

Gor

Нет, такой вариант плохой. Админскую шару использовать не по назначению не хорошо.

Согласен, но это не продакшн вариант - временная настройка на тестирование.

А по поводу вопроса

Предположим, если я хочу чтобы Лотус проверял какую либо папку каждую минуту.
Насколько я знаю в Шедуллерных агентах периодичность запуска минимум 5 минут.

Как настроить так, чтобы агент запускался каждую минуту и смотрел появились ли там файлы или нет, ну и соответственно если появились, то выполнять какие нибудь действия?

идей нет ?
 
G

Gor

Внутри агента скриптом выдерживать паузу в 1 мин. и повторно выполнить его работу. Так 4 раза.

Подскажите плиз как это лучше организовать, что использовать?
NotesTimer?

Как то я с этим не сталкивался ни разу...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216
отсюда (в 7-ой жвм войдет в станд. АПИ)


в бижуалвасике:

как приляпать это к нотусам - вопрос
 

rinsk

Lotus Team
12.11.2009
1 151
125
BIT
4
зараза какая то...
Заработало.
Вот с таким путём работает
\\сервер\c$\tmp\
Видимо Kill не работает с расшаренными папками...

Не придумывайте ничего - всегда работало и работает. Настраивайте права доступа правильно.

\\сервер\c$\tmp\ vs \\сервер\Share\tmp\ - разницы не никакой.


Добавлено:
У меня по ходу дела назрел ещё один вопрос:

Предположим, если я хочу чтобы Лотус проверял какую либо папку каждую минуту.
Насколько я знаю в Шедуллерных агентах периодичность запуска минимум 5 минут.
Как настроить так, чтобы агент запускался каждую минуту и смотрел появились ли там файлы или нет, ну и соответственно если появились, то выполнять какие нибудь действия?
Hint: В св-вах агента установите периодичность в 1 минуту, сохраните и закройте... Будет вам 1 минута:)
Если строго через 1 минуту, то через Program документы сервера. Если на клиенте и меньше минуты - запускайте агента в фоновом треде и через конструкцию Yield|DoEvents & Seconds() формируйте задержку...
 
G

Gor

Hint: В св-вах агента установите периодичность в 1 минуту, сохраните и закройте... Будет вам 1 минута

В свойствах агента нельзя поставить интервал запуска 1 минута. Минимум 5.

\\сервер\c$\tmp\ vs \\сервер\Share\tmp\ - разницы не никакой.

не знаю есть ли разница или нет, но у меня работает только 1й вариант.

Не придумывайте ничего - всегда работало и работает. Настраивайте права доступа правильно.

К сожалению правами доступа занимаюсь не я... Хотя если бы у меня был доступ, я думаю всё прошло бы намного легче

со sleep работает.

sleep(60)

всем огромное спасибо
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!