📄 test-exec.sh
字号:
# $OpenBSD: test-exec.sh,v 1.14 2002/04/15 15:19:48 markus Exp $# Placed in the Public Domain.PORT=4242USER=`id -un`SUDO=#SUDO=sudoOBJ=$1if [ "x$OBJ" = "x" ]; then echo '$OBJ not defined' exit 2fiif [ ! -d $OBJ ]; then echo "not a directory: $OBJ" exit 2fiSCRIPT=$2if [ "x$SCRIPT" = "x" ]; then echo '$SCRIPT not defined' exit 2fiif [ ! -f $SCRIPT ]; then echo "not a file: $SCRIPT" exit 2fiif sh -n $SCRIPT; then trueelse echo "syntax error in $SCRIPT" exit 2fiunset SSH_AUTH_SOCK# defaultsSSH=sshSSHD=sshdSSHAGENT=ssh-agentSSHADD=ssh-addSSHKEYGEN=ssh-keygenSSHKEYSCAN=ssh-keyscanSFTP=sftpSFTPSERVER=/usr/libexec/openssh/sftp-serverif [ "x$TEST_SSH_SSH" != "x" ]; then SSH=${TEST_SSH_SSH}fiif [ "x$TEST_SSH_SSHD" != "x" ]; then SSHD=${TEST_SSH_SSHD}fiif [ "x$TEST_SSH_SSHAGENT" != "x" ]; then SSHAGENT=${TEST_SSH_SSHAGENT}fiif [ "x$TEST_SSH_SSHADD" != "x" ]; then SSHADD=${TEST_SSH_SSHADD}fiif [ "x$TEST_SSH_SSHKEYGEN" != "x" ]; then SSHKEYGEN=${TEST_SSH_SSHKEYGEN}fiif [ "x$TEST_SSH_SSHKEYSCAN" != "x" ]; then SSHKEYSCAN=${TEST_SSH_SSHKEYSCAN}fiif [ "x$TEST_SSH_SFTP" != "x" ]; then SFTP=${TEST_SSH_SFTP}fiif [ "x$TEST_SSH_SFTPSERVER" != "x" ]; then SFTPSERVER=${TEST_SSH_SFTPSERVER}fi# these should be used in testsexport SSH SSHD SSHAGENT SSHADD SSHKEYGEN SSHKEYSCAN SFTP SFTPSERVER#echo $SSH $SSHD $SSHAGENT $SSHADD $SSHKEYGEN $SSHKEYSCAN $SFTP $SFTPSERVER# helpercleanup (){ if [ -f $PIDFILE ]; then pid=`cat $PIDFILE` if [ "X$pid" = "X" ]; then echo no sshd running else if [ $pid -lt 2 ]; then echo bad pid for ssd: $pid else $SUDO kill $pid fi fi fi}trace (){ if [ "X$TEST_SSH_TRACE" = "Xyes" ]; then echo "$@" fi}verbose (){ if [ "X$TEST_SSH_QUIET" != "Xyes" ]; then echo "$@" fi}fail (){ RESULT=1 echo "$@"}fatal (){ echo -n "FATAL: " fail "$@" cleanup exit $RESULT}RESULT=0PIDFILE=$OBJ/pidfiletrap fatal 3 2# create server configcat << EOF > $OBJ/sshd_config Port $PORT ListenAddress 127.0.0.1 #ListenAddress ::1 PidFile $PIDFILE AuthorizedKeysFile $OBJ/authorized_keys_%u LogLevel QUIETEOF# server config for proxy connectscp $OBJ/sshd_config $OBJ/sshd_proxy# allow group-writable directories in proxy-modeecho 'StrictModes no' >> $OBJ/sshd_proxy# create client configcat << EOF > $OBJ/ssh_configHost * Hostname 127.0.0.1 HostKeyAlias localhost-with-alias Port $PORT User $USER GlobalKnownHostsFile $OBJ/known_hosts UserKnownHostsFile $OBJ/known_hosts RSAAuthentication yes PubkeyAuthentication yes ChallengeResponseAuthentication no HostbasedAuthentication no PasswordAuthentication no RhostsAuthentication no RhostsRSAAuthentication no BatchMode yes StrictHostKeyChecking yesEOFrm -f $OBJ/known_hosts $OBJ/authorized_keys_$USERtrace "generate keys"for t in rsa rsa1; do # generate user key rm -f $OBJ/$t ${SSHKEYGEN} -q -N '' -t $t -f $OBJ/$t ||\ fail "ssh-keygen for $t failed" # known hosts file for client ( echo -n 'localhost-with-alias,127.0.0.1,::1 ' cat $OBJ/$t.pub ) >> $OBJ/known_hosts # setup authorized keys cat $OBJ/$t.pub >> $OBJ/authorized_keys_$USER echo IdentityFile $OBJ/$t >> $OBJ/ssh_config # use key as host key, too $SUDO cp $OBJ/$t $OBJ/host.$t echo HostKey $OBJ/host.$t >> $OBJ/sshd_config # don't use SUDO for proxy connect echo HostKey $OBJ/$t >> $OBJ/sshd_proxydonechmod 644 $OBJ/authorized_keys_$USER# create a proxy version of the client config( cat $OBJ/ssh_config echo proxycommand ${SSHD} -i -f $OBJ/sshd_proxy) > $OBJ/ssh_proxy# check proxy config${SSHD} -t -f $OBJ/sshd_proxy || fatal "sshd_proxy broken"start_sshd (){ # start sshd $SUDO ${SSHD} -f $OBJ/sshd_config -t || fatal "sshd_config broken" $SUDO ${SSHD} -f $OBJ/sshd_config trace "wait for sshd" i=0; while [ ! -f $PIDFILE -a $i -lt 5 ]; do i=`expr $i + 1` sleep $i done test -f $PIDFILE || fatal "no sshd running on port $PORT"}# source test body. $SCRIPT# kill sshdcleanupif [ $RESULT -eq 0 ]; then verbose ok $tidelse echo failed $tidfiexit $RESULT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -