• Recent
    • Unsolved
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Roll-Calling hosts to identify problems.

    Scheduled Pinned Locked Moved
    Tutorials
    1
    1
    651
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Wayne WorkmanW
      Wayne Workman
      last edited by Wayne Workman

      I had a need for getting a list of computers that could possibly be having problems with the FOG Client. @Joe-Schmitt gave me an idea on how to do it conceptually, and I was able to build some things that did exactly what he suggested.

      1. Create a samba share on the fog server.
      • Install samba and samba-client, start and enable the smb service.

      • Create a share folder that everyone has access to:
        mkdir /readwrite$
        chmod 777 /readwrite$

      • Configure samba:
        Configuration file is: /etc/samba/smb.conf
        Here’s the configuration I wrote:

      map to guest = Bad user
      guest account = nobody
      security = user
      passdb backend = tdbsam
      unix charset = utf-8
      dos charset = cp932
      
      [readwrite$]
      path = /readwrite$
      read only = no
      # The below line defines what IP ranges are allowed. They are space delimited.
      # For instance, if you wanted local loopback address, the 10.0.0. range,
      # and the 192.168.1 range, and a specifc public IP of 50.50.50.50,
      # It would be this:
      # hosts allow = 127.0.0.1 10.0.0. 192.168.1. 50.50.50.50
      hosts allow = 10.2.
      create mode = 0777
      directory mode = 0777
      writable = yes
      public = yes
      
      1. Generate a file per hostname registered with your fog server in the shared directory. We do this easily with the following BASH script:

      Note: There’s a nodeBB bug that is currently affecting how scripts are displayed. Be aware that after double left brackets [[ and before double right brackets ]] there should be a space.

      #!/bin/bash
      
      #----- MySQL Credentials -----#
      #Here, we just source the fogsettings file because creds are in there.
      source /opt/fog/.fogsettings
      
      #----- Begin Program -----#
      
      selectHostname="SELECT hostName FROM hosts"
      
      options="-sN"
      if [[ $snmysqlhost != "" ]]; then
              options="$options -h$snmysqlhost"
      fi
      if [[ $snmysqluser != "" ]]; then
              options="$options -u$snmysqluser"
      fi
      if [[ $snmysqlpass != "" ]]; then
              options="$options -p$snmysqlpass"
      fi
      options="$options -D fog -e"
      
      
      mysql $options "$selectHostname" | while read hostName; do
      
          if [[ "$hostName" != "" ]]; then
              echo "$hostName" > /readwrite$/$hostName
          fi
      
      done
      

      After running this script, here’s what I see in my /readwrite$ directory below. There should be a file per registered host, here’s a clipped sample of my output:

      [root@mb-fog ~]# ls /readwrite\$/
      r0006502230WLMB  r0105508030WDMB  r0129008514WDMB  r0150508359WDMB  r0206510494WDMB  r0212510525WDMB  R0219502510WLMB  r0224004875WDMB  R0225508043WDMB  R0232510478WDMB
      r0009508526WDMB  r0106008038wdmb  r0129008524WDMB  r0150508360WDMB  R0206510511WDMB  r0213005683WLMB  r0219502542WLMB  r0224004876WDMB  R0225508056WDMB  R0232510479WDMB
      [root@mb-fog ~]#
      

      Next, we use Windows to create a batch script designed for FOG Snapins, to run on each host, and each host delete it’s file in this share. Create this as a .bat file and create a snapin for it on the fog server, associate it with all hosts, and run it on all hosts.

      set "folder=\\10.2.1.11\readwrite$"
      pushd "%folder%" && (
          for /d %%i in (%computername%) do del "%%i" /Q 
          popd
      )
      

      When deployed via FOG Snapins to all hosts in the environment, you are left with files that are the hostnames of all hosts that have not run yet. it may take hours or even weeks depending on your environment for this test to completely finish accurately. hostnames that remain can be assumed to be offline, having network issues, windows issues, or fog client issues.

      You can compile all these leftover hostnames into a single file as often as you like with the following BASH script:

      #!/bin/bash
      
      #path to files.
      FILES=/readwrite$/*
      
      #where you want it to go:
      output="/readwrite$/problemHosts.txt"
      
      rm -f $output
      
      for f in $FILES
      do
          if [[ "$f" != "$output" ]]; then
              echo ${f##*/} >> $output
          fi
      done
      

      Please help us build the FOG community with everyone involved. It's not just about coding - way more we need people to test things, update documentation and most importantly work on uniting the community of people enjoying and working on FOG!
      Daily Clean Installation Results:
      https://fogtesting.fogproject.us/
      FOG Reporting:
      https://fog-external-reporting-results.fogproject.us/

      1 Reply Last reply Reply Quote 1
      • 1 / 1
      • First post
        Last post

      124

      Online

      12.1k

      Users

      17.3k

      Topics

      155.3k

      Posts
      Copyright © 2012-2024 FOG Project