Noah Denier
Noah Denier

Reputation: 31

Why would this script work on Mac OS and not on Windows using Git Bash?

I wrote a site diagnostic script and have been testing it using iTerm2 on MacOS. A good portion of people that may consume this script use Windows and Git Bash (it's probably 50|50 Windows vs Mac OS): so not supporting Windows might not be an option.

I had someone here test out the script on their Windows PC and it immediately failed. Would anyone know why this function would succeed on Mac and fail on Windows?

_ping_test(){

  # Define Error Codes & Messages Below:
  local _success="0"
  local _success_message="${_green}SUCCESS:${_reset_color} Ping Test Passed"
  local _unknown_host="68"
  local _unknown_host_message="${_red}ERROR:${_reset_color} Ping Test Failed on ${_url} - Unknown Host"
  local _unrecognized_code="${_red}ERROR:${_reset_color} Ping Test Failed - Unrecognized Status Code${_ping_test} "


  local _url="${1}.testdomain.net"
  local _ping_url=$(ping -c 1 -q $_url &> /dev/null; echo $?)

  if [ "${_ping_url}" == "${_success}" ] ; then
    echo $_success_message
  elif [ "${_ping_url}" == "${_unknown_host}" ] ; then
    echo $_unknown_host_message
    exit 1
  elif true ; then
    echo $_unrecognized_code
    exit 1
  fi
}

Running it returns the Unrecognized Code response on his computer, but given the same site is successful on my Mac.

I echo'd back $_url, and that returns the correct site. I also tried removing the &> /dev/null portion to hear back what the issue was, but it returned that it didn't recognize the command ping

Then I just ran the ping command directly in his Git Bash window, and that worked outside of the shell script.

I realize the ping test portion is a bit silly (it's used to exit the script if they input a bad URL), but the more valuable ssh commands that run later were also failing similarly

Upvotes: 1

Views: 584

Answers (1)

Noah Denier
Noah Denier

Reputation: 31

I managed to grab a Windows PC and TiL that the parameters you pass to ping follow a different paradigm based on OS:

-c means count on Mac OS

but

-c means compartmentalize on Windows which required admin access

fixed the params and then it worked

Upvotes: 2

Related Questions