#!/usr/bin/expect -f ########################################################################### ## Copyright (C) Wizardry and Steamworks 2024 - License: MIT ## ########################################################################### # This is an "expect" script that checks whether tor has established a # # circuit and sets the return status depending on whether it has or not. # # # # In other words, iff. the script returns 0, then tor has an established # # circuit; otherwise no circuit has been established. # # # # Requirements: # # * expect (TCL program) # # * tor must expose a control port and must have a control password # # # # In order to generate a control password, issue: tor --hash-password PWD # # where PWD is the desired control port password. After that, amend the # # tor configuration file to set the control port address, port and pass: # # # # ControlPort 0.0.0.0:8051 # # HashedControlPassword 16:A482ADEAAWF43EE... # # # # Running: ./this-script ADDRESS PORT PASSWORD # # where: # # * ADDRESS is the tor listening control address, # # * PORT is the tor listening control port, # # * PASSWORD is the plaintext control password # # # # after which the return status can be checked on the shell with: # # echo $? # ########################################################################### set address [lindex $argv 0]; set port [lindex $argv 1]; set password [lindex $argv 2]; set timeout 5 spawn telnet $address $port send "AUTHENTICATE \"$password\"\n" expect "250 OK\r\n" send "GETINFO status/circuit-established\n" expect { timeout { exit 1 } -ex "250-status/circuit-established=1\r\n250 OK\r\n" }