]> git.saurik.com Git - apple/security.git/blame - sec/SOSCircle/CloudKeychainProxy/scripts/sshauser
Security-55471.tar.gz
[apple/security.git] / sec / SOSCircle / CloudKeychainProxy / scripts / sshauser
CommitLineData
427c49bc
A
1#!/usr/bin/expect --
2
3proc usage {} {
4 puts stderr "Usage: sshauser \[ --retry \] port user \[ command ... \]"
5 exit 22
6}
7
8if { $argc < 2 } {
9 usage
10}
11
12set arg 0
13set retry 0
14if { [lindex $argv $arg] == "--retry" } {
15 set retry 1
16 set arg [expr $arg + 1]
17}
18set offset [lindex $argv $arg]
19set arg [expr $arg + 1]
20set username [lindex $argv $arg]
21set arg [expr $arg + 1]
22set command [lrange $argv $arg $argc]
23
24set password "alpine"
25set timeout 60
26
27# trap SIGWINCH and pass to spawned process
28trap {
29 set rows [stty rows]
30 set cols [stty columns]
31 stty rows $rows columns $cols < $spawn_out(slave,name)
32} WINCH
33
34set continue 1
35while { $continue } {
36 set continue $retry
37 spawn ssh -o NoHostAuthenticationForLocalhost=yes -p $offset $username@localhost
38 while { 1 } {
39 expect "Are you sure you want to continue connecting (yes/no)" {
40 send "yes\r"
41 } "password:" {
42 send "$password\r"
43 } "#" {
44 if { $argc > 2 } { send "$command\r" }
45 interact
46 break
47 } "mobile" {
48 if { $argc > 2 } { send "$command\r" }
49 interact
50 break
51 } "ssh: connect to host localhost port $offset: Connection refused" {
52 if { $retry } {
53 wait
54 set continue $retry
55 send_user "conection lost... retrying in 5 seconds.\n"
56 sleep 5
57 }
58 break
59 } "ssh_exchange_identification: read: Connection reset by peer" {
60 if { $retry } {
61 wait
62 set continue $retry
63 send_user "Device rebooting waiting for 15 seconds.\n"
64 sleep 15
65 }
66 break
67 }
68 }
69}