new upstream release (3.3.0); modify package compatibility for Stretch
[ossec-hids.git] / debian / ossec-hids / var / ossec / agentless / main.exp
diff --git a/debian/ossec-hids/var/ossec/agentless/main.exp b/debian/ossec-hids/var/ossec/agentless/main.exp
new file mode 100755 (executable)
index 0000000..e8daae5
--- /dev/null
@@ -0,0 +1,96 @@
+#!/usr/bin/env expect
+
+# Agentless monitoring
+#
+# Copyright (C) 2009 Trend Micro Inc.
+# All rights reserved.
+#
+# This program is a free software; you can redistribute it
+# and/or modify it under the terms of the GNU General Public
+# License (version 2) as published by the FSF - Free Software
+# Foundation.
+
+if {$argc <= 1} {
+    send_user "\nERROR: ssh_integrity_check <hostname> <arguments>\n";
+    exit 1;
+}
+
+# NOTE: this script must be called from within /var/ossec for it to work
+set passlist "agentless/.passlist"
+set sshsrc "agentless/ssh.exp"
+set susrc "agentless/su.exp"
+set sshloginsrc "agentless/sshlogin.exp"
+set sshnopasssrc "agentless/ssh_nopass.exp"
+set hostname [lindex $argv 0]
+set args [lrange $argv 1 end]
+set pass "x"
+set use_su " "
+set use_sudo " "
+set addpass "x"
+set timeout 20
+
+# Do script test
+if {[string compare $hostname "test"] == 0} {
+    if {[string compare $args "test"] == 0} {
+        exit 0;
+    }
+}
+
+# Check if the hostname (first argument) is an option
+if {[string compare $hostname "use_su"] == 0} {
+    set use_su "su;"
+    set hostname [lindex $argv 1]
+    set args [lrange $argv 2 end]
+}
+# Check if the hostname (first argument) is an option
+if {[string compare $hostname "use_sudo"] == 0} {
+    set use_sudo "sudo sh;"
+    set hostname [lindex $argv 1]
+    set args [lrange $argv 2 end]
+}
+
+# Read the password list
+if [catch {
+    set in [open "$passlist" r]
+} loc_error] {
+    send_user "\nERROR: Password list not present (use \"register_host\" first).\n"
+    exit 1;
+}
+
+while {[gets $in line] != -1} {
+        set me [string first "|" $line]
+        set me2 [string last "|" $line]
+        set length [string length $line]
+
+        if {$me == -1} {
+            continue;
+        }
+        if {$me2 == -1} {
+            continue;
+        }
+        if {$me == $me2} {
+            continue;
+        }
+
+        set me [expr $me-1]
+        set me2 [expr $me2-1]
+
+        set host_list [string range $line 0 $me]
+        set me [expr $me+2]
+        set pass_list [string range $line $me $me2]
+        set me2 [expr $me2+2]
+        set addpass_list [string range $line $me2 $length]
+
+        if {[string compare $host_list $hostname] == 0} {
+            set pass "$pass_list"
+            set addpass "$addpass_list"
+            break
+        }
+}
+close $in
+
+
+if {[string compare $pass "x"] == 0} {
+    send_user "\nERROR: Password for '$hostname' not found.\n"
+    exit 1;
+}