• Recent
  • Unsolved
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Register
  • Login
  • 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.
  • W
    Wayne Workman
    last edited by Wayne Workman Aug 23, 2017, 9:40 PM Oct 24, 2016, 3:39 PM

    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
    1 / 1
    • First post
      1/1
      Last post

    119

    Online

    12.1k

    Users

    17.3k

    Topics

    155.3k

    Posts
    Copyright © 2012-2024 FOG Project