Вы должны использовать WMI . Затем вы можете отслеживать Win32_ProcessStartTrace
, чтобы получать уведомления о начале процесса. Кроме того, вы даже можете использовать Win32_ProcessStopTrace
, чтобы получать уведомления, когда процесс останавливается. Ваш код будет выглядеть так:
Public Shared Sub Main()
Dim startWatcher As ManagementEventWatcher = New ManagementEventWatcher(New WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"))
startWatcher.EventArrived += New EventArrivedEventHandler(startWatcher_EventArrived)
startWatcher.Start()
End Sub
Private Shared Sub startWatcher_EventArrived(ByVal sender As Object, ByVal e As EventArrivedEventArgs)
Dim logString As String ="{0}: Process started: {1}".Format( Now.ToString(), e.NewEvent.Properties("ProcessName").Value)
Using sw As StreamWriter = File.AppendText(YourLogFile)
sw.WriteLine(logString)
End Using
End Sub
Можно попытаться монтировать диск Windows как точку монтирования на машине Linux, с помощью smbfs; Вы затем смогли бы использовать нормальный Linux пишущие сценарий и копирующие инструменты, такие как крон и scp/rsync, чтобы сделать копирование.
Можно найти rsync для окон в cygwin, с которым можно установить rsync сервер на поле окон и выполнить задание крона на машине Linux rsync'ing все файлы к машине окон. Мы раньше делали это, и это хорошо работало.
"Я в замешательстве того, как настроить это на машине Windows". Windows является клиентом или сервером? В недоумении средства, что, конкретно? Что Вы не можете сделать?
"машина Linux к окна" может быть сделана два пути.
Linux является клиентом. Windows выполняет FTP или SCP или сервер SSH. Linux имеет клиент и продвигает файл к Windows. Взгляд на FileZilla для свободного FTP-сервера окон. Кроме того, окна часто имеет сервис FTP, это выключено. Включите его.
Windows является клиентом. Windows периодически вытягивает файл с сервера Linux. Это легче, так как Linux уже имеет все необходимые серверы в наличии. Вы делаете, howeveevr, должен запустить их на Linux.
Существует множество sftp, scp клиенты для Windows. Windows идет с клиентом ftp. Google для sftp клиента. Вы найдете WinSCP, Шпаклевку, filezilla, и перечислите бесплатный список страны sftp клиентов.
Я не использовал его в течение многих лет теперь, но Вы могли попробовать Унисон из http://www.cis.upenn.edu/~bcpierce/unison/
Это могло быть сделано с 'smbclient', который действует во многом как клиент FTP к доле Windows. Проверьте страницу справочника: man smbclient
и ищите способы написать сценарий его с -c
опция, или man expect
управлять им.
Вот то, как я, вероятно, сделал бы это хотя:
mkdir /mnt/sharename
Отредактируйте свой/etc/fstab файл и добавьте запись что-то вроде этого. Замените идентификатор пользователя 500 с Вашим идентификатором пользователя. Замените sharename своим сетевым именем окон. Replance WINDOWSHOSTNAME с Вашим именем хоста или IP-адресом. Если Вы не знаете доли, работаете smbclient -L WINDOWSHOSTNAME
.
//WINDOWSHOSTNAME/sharename /mnt/sharename cifs credentials=/root/smblogin,uid=500,noauto,user 0 0
Отредактируйте/root/smblogin и поместите следующие две строки в него
username=YOUR_WINDOWS_USERNAME
password=YOUR_WINDOWS_PASSWOD
Войдите в систему как пользователь от шага 1.
mount /mnt/sharename
Если это успешно выполняется, то запишите сценарий, чтобы сделать это автоматически. Давайте назовем это 'backup.sh':
#!/bin/sh
df | grep -q /mnt/sharename
if test $? -ne 0 ; then
mount /mnt/sharename
fi
cp -r /path/to/dir /mnt/sharename/destination/
Используйте крон для запущения скрипта.
crontab -e
PATH=/bin:/usr/bin
# Backup at 2:15 A.M. every day. Run 'man 5 crontab' for help on the time format
15 2 * * * /path/to/backup.sh
Можно попробовать WinSCP и его поддержку сценариев. И Windows поддерживает некоторую подобную крону операцию в своем материале управления, не так ли?