I’ve got this command in a bash script:

TEST=$(curl -o /dev/null -s -k -w "%{http_code}" -u "${USERNAME}:${PASSWORD}" "${URL}/dashboard/")
echo "${TEST}" #debug

When the script runs, the output is “000”.

When I run the same curl command from the shell, the output is “200” (which is correct, since the URL is valid).

I verified that the USERNAME, PASSWORD, and URL vars are being passed to the subshell.

I’d appreciate it if you could point out what I’m doing wrong here. :)

UPDATE: This has been solved.

  • rwdf@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    14 days ago

    Ah, I see. I guess they get different contexts or something? (Edit: I re-read your post and this does not make any sense :)) What if you chain the ssh command and the curl using &&?

    • Mike Wooskey@lemmy.thewooskeys.comOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      14 days ago

      I’m not sure how to chain these 2 commands with &&, because the SSH command is being put in the background with &.

      This doesn’t work:

      SSH_CMD="ssh -N -L ${LOCAL_PORT}:127.0.0.1:${REMOTE_PORT} ${REMOTE_USER}@${REMOTE_HOST}"
      $SSH_CMD & && TEST=$(curl -o /dev/null -s -k -w "%{http_code}" -u "${USERNAME}:${PASSWORD}" "${URL}/dashboard/")
      SSH_PID=$!
      SSH_RESULT=$?
      echo $TEST
      

      Perhaps I don’t need it in the background - the goal was to establish the tunnel and then continue with the script without it hanging until the ssh command is canceled.