78 lines
1.4 KiB
Bash
78 lines
1.4 KiB
Bash
|
|
#!/usr/bin/expect
|
|||
|
|
|
|||
|
|
if {$argc!=4&&$argc!=3} {
|
|||
|
|
send_user "usage: execCmdBySu.sh resultFlag command name \[password\]\n"
|
|||
|
|
exit 1
|
|||
|
|
}
|
|||
|
|
# 0<><30>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD>ȡ<EEB2A2>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ִ<EFBFBD><D6B4>&<26><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD>
|
|||
|
|
set resultFlag [lindex $argv 0]
|
|||
|
|
set cmd [lindex $argv 1]
|
|||
|
|
set user [lindex $argv 2]
|
|||
|
|
set pass [lindex $argv 3]
|
|||
|
|
|
|||
|
|
set timeout 30
|
|||
|
|
set flag 0
|
|||
|
|
|
|||
|
|
#<23>رտ<D8B1><D5BF><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
log_user 0
|
|||
|
|
|
|||
|
|
spawn whoami
|
|||
|
|
expect "root" {set flag 1}
|
|||
|
|
|
|||
|
|
# <20><>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>${cmd}<7D><><EFBFBD><D7B7>"echo $?",Ϊ<><CEAA>ȡcmd<6D><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>ʵ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
if {$resultFlag==0} {
|
|||
|
|
spawn su - -c "${cmd};echo $?" ${user}
|
|||
|
|
|
|||
|
|
#<23><>ǰ<EFBFBD><C7B0>¼<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>root<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if {$flag==0} {
|
|||
|
|
expect {
|
|||
|
|
"<22><><EFBFBD><EFBFBD>*" {send ${pass}\r}
|
|||
|
|
"password*" {send ${pass}\r}
|
|||
|
|
default {
|
|||
|
|
send_error "error\n"
|
|||
|
|
exit 2
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#<23><EFBFBD><F2BFAABF><EFBFBD>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
log_user 1
|
|||
|
|
|
|||
|
|
expect {
|
|||
|
|
"* <20><><EFBFBD>벻<EFBFBD><EBB2BB>ȷ*" {exit 1}
|
|||
|
|
#----<2D>˴<EFBFBD><CBB4><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ܶ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
eof {exit 0}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
} else {
|
|||
|
|
spawn su - -c "${cmd}" ${user}
|
|||
|
|
|
|||
|
|
#<23><>ǰ<EFBFBD><C7B0>¼<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>root<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if {$flag==0} {
|
|||
|
|
expect {
|
|||
|
|
"<22><><EFBFBD><EFBFBD>*" {send ${pass}\r}
|
|||
|
|
"password*" {send ${pass}\r}
|
|||
|
|
default {
|
|||
|
|
send_error "error\n"
|
|||
|
|
exit 2
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
expect {
|
|||
|
|
"* <20><><EFBFBD>벻<EFBFBD><EBB2BB>ȷ*" {exit 1}
|
|||
|
|
#----Ϊ<><CEAA>&<26><>̨<EFBFBD><CCA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
eof {
|
|||
|
|
send_user "ok\n"
|
|||
|
|
exit 0
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
interact
|
|||
|
|
exit 0
|
|||
|
|
|
|||
|
|
|
|||
|
|
#overlay chess
|
|||
|
|
#overlay program args
|
|||
|
|
#disconnect
|
|||
|
|
#close -onexec 0 -i ${spawn_id}
|
|||
|
|
#remove_nulls 1
|