Leser: 1
6 Einträge, 1 Seite |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
use File::Spec;
use IO::Socket;
use IO::Select;
use Win32::API;
use Win32;
use Win32::Daemon;
use strict;
use warnings;
my $programmpfad = $0;
$programmpfad =~ s/[^\\]*?$//;
use Win32::Daemon::Simple
Service => 'Go Back!Up',
Name => 'Go Back!Up Service',
Version => 'RC2.0',
Info => {
display => 'Go Back!Up Service',
description => 'Backup Programm',
user => '',
pwd => '',
interactive => '1',
},
Params => {
Tick => 0,
Talkative => 0,
Interval => 1,
LogFile => "$programmpfad\\log\\GoBackUp.log",
Description => <<'*END*',m
*END*
},
param_modify => {
LogFile => sub {File::Spec->rel2abs($_[0])},
tAlkative => sub {undef},
};
LogNT("Running as ".SERVICEID);
ServiceLoop(\&doSomething);
Log("Going down");
exit;
sub doSomething
{
my $pid = fork();
if($pid == 0)
{
my $server = IO::Socket::INET->new(
LocalPort => 2005,
type => SOCK_STREAM,
Reuse => 1,
Listen => 10
) or die "Server läuft nicht: $@\n";
my $select = IO::Select->new($server);
while(my @readable = $select->can_read)
{
foreach my $socket (@readable)
{
if($socket == $server)
{
my $client = $socket->accept;
print "New client connects\n";
$select->add($client);
$client->print("Welcome\n");
}
else
{
my $computername = $socket->getline;
$computername =~ s!\r?\n$!!g; # Zeilenumbruch entfernen
if (defined $computername)
{
chomp $computername;
my $WindowAvailable ="";
$WindowAvailable = FindWindow("$computername");
print "$WindowAvailable\n";
if ($WindowAvailable == 0)
{
#$client->print ("Window ist nicht vorhanden\n");
system "start \"$computername\" cmd.exe";
$socket->print("reconnect\n");
$socket->print("port=12346\n");
#delete_socket($select, $socket);
}
else
{
$socket->print ("Window ist vorhanden\n");
$socket->print("process still running\n");
$socket->print("port=2005\n");
}
}
else
{
print "Client says: [$computername]\n";
delete_socket($select, $socket);
}
}
}
sub FindWindow
{
my $WindowName = shift(@_);
chomp $WindowName;
print "$WindowName";
my $FindWindow = new Win32::API('user32', 'FindWindow', ['P','P'], 'N');# or die print "$!";
my $name = 'Telnet 127.0.0.1';
my $class = 0;
my $topHwnd = $FindWindow->Call($class, $WindowName);
print "$topHwnd\n";
return $topHwnd;
}
sub delete_socket
{
my ($sel, $sock) = @_;
$sel->remove($sock);
$sock->close;
}
}
}
else
{
if (Win32::Daemon::State() == SERVICE_STOP_PENDING)
{
kill(0);
CORE::exit;
Win32::Daemon::State(SERVICE_STOPPED);
Win32::Daemon::StopService();
exit 0;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl
use strict;
use warnings;
use POSIX qw(:signal_h); # Import der Signal-Konstanten
$SIG{'CHLD'} = 'IGNORE'; # vermeidet Zombie-Prozesse
my $pid = fork;
if($pid == 0) {
# Kind schlaeft 5 Minuten
sleep 300;
exit(0);
} else {
# Vater toetet Kind schon nach 10 Sekunden
# und beendet sich nach 10 Sek selbst
sleep 10;
kill SIGKILL, $pid;
sleep 10;
exit(0);
}
QuoteKinder toeten kannst du mit kill
Kind schläft 5 Minuten ...
# Vater tötet Kind nach schon 10 Sekunden
# und beendet sich nach 10 Sek selbst
und die toten Kinder von Hand aufraeumen
QuoteBin ich noch im richtigen Forum?
QuoteBin ich noch im richtigen Forum?
6 Einträge, 1 Seite |