TelnetCommandScripts
the telnet gui may seem awkward to some people. however, combined with the unix shell, it can be a powerful tool to extract data you want. for that, you need the nc (netcat, see [1]] or to get a rpm package go [[2]) tool.
Remark: depending on distros, netcat is either available under the name nc, ncat (comes with nmap tool), or only netcat. In the next examples, we will use the name nc (because we're lazy) but if that name doesn't exist in your box, replace nc (or ncat) by netcat in all examples.
for example, you can write a script that gives only the files that are currently downloaded to stdout:
(echo vd; echo q) | nc <mldonkey-telnet-IP> 4000 | sed "/Paused/d" | sed "/- *$/d"
or you can make a script for invoking any command:
(echo $1;echo q) | nc <mldonkey-telnet-IP> 4000
which would be used like this:
# <name of script> "<[[MLdonkeyCommandsExplained|donkey_command]]>"
by the way, a script like this is available with the mldonkey distribution. it is called mldonkey_command. But you have to edit it and set the right IP.
of course, this can become arbitrarily complex ;)
Contents |
Program to check net stats
tells you every five seconds seen peers, download, upload, banned peers.
while sleep 5; do (echo cs;echo q)|nc <mldonkey-telnet-IP> 4000|grep Total;done
you can let this run in a minimal telnet (one line high), if you have to know how your donkey is doing while you're away ;)
Alternate code:watch -n5 'echo -e "cs\nq\n"|nc <mldonkey-telnet-IP> 4000|grep Total'
note: if you've set a password don't forget to do an 'echo "auth user password"' before.
Program to submit torrent files:
(just chmod +x it and put it into your $PATH, then simply associate this script .torrent files in your browser)
#!/bin/sh # # /usr/local/bin/mldonkey_torrent_handler # # note: this scripts requires a mount to your mldonkey box, because netcat has some problems with some special strings, # but i guess almost all of you got the temp/incoming directories mounted SERVER=server USER=username PASSWD=password LINK="$@" WORKDIR=/mnt/cube/bigdata/p2p ## local dir SRVDIR=/mnt/bigdata/p2p ## server-side dir LOGFILE="$WORKDIR"/torrent_log for i in "$@"; do TORRENTFILE=torrent`date +%s` cp "$i" "$WORKDIR"/"$TORRENTFILE".torrent -v >> $LOGFILE chmod 665 "$WORKDIR"/"$TORRENTFILE".torrent (echo auth $USER $PASSWD;echo dllink "$SRVDIR"/"$TORRENTFILE".torrent; echo q) | nc $SERVER 4000 echo "added \"$i\" to mldonkey" >> "$LOGFILE" done
Here is another one, which should work, even if you don't have a mount to your mldonkey box. This script requires netcat. It imitates an http-server to transmit the torrent-file. Mldonkey will show the torrent as a number.torrent --> 21312.torrent. Don't be intimitated; as soon as mldonkey starts downloading the file the name will be corrected.
#!/bin/sh
# I haven't tested this script very often, but it is IMO safe to use
#
SERVER=yourServerIPOrName
USER=yourUsername
PASS=yourPassword
TMP_DIR=/tmp/
# you don't need to change anything below this line
# we choose a random port above 10000, where our "http-server" will listen
declare -i PORT
PORT=$RANDOM+10000
function printHeaders
{
echo "HTTP/1.0 200 OK"
echo "Content-Type: application/x-bittorrent"
echo "Content-Length: $1"
echo
}
# stolen from: http://www.cyberciti.biz/nixcraft/vivek/blogger/2006/01/read-unixlinux-system-ip-address-in.php
LOCAL_ADDRESS=$(/sbin/ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}' | head -n 1)
FILE=$TMP_DIR/torrent$(date +%s)
cp "$@" $FILE
FSIZE=$(du -b "$FILE" | cut -f 1)
# this starts our http-server.
((printHeaders $FSIZE; echo; echo; echo; echo; echo; echo) | netcat -l -p $PORT; (printHeaders $FSIZE; cat "$FILE"; echo; echo; echo; echo) | netcat -l -p $PORT) &
# and this tells mldonkey to get the torrent from the http-server
(echo "auth $USER $PASS";
echo "dllink http://${LOCAL_ADDRESS}:$PORT/$RANDOM.torrent";
echo "q") | netcat $SERVER 4000
#echo "dllink http://${LOCAL_ADDRESS}:$PORT/$RANDOM.torrent" > /tmp/pro1
# you could probably remove the sleep
sleep 300
Wget-like sh script for http downloads
Starts http download, given the http url and optional referrer url. Can be used as a drop-in wget/curl replacement and with browser plugins like flashgot for firefox (see Browser_Integration).
Substitute <login> <password> <server> and/or 4000 (port) with appropriate values. It is quite handy to have a separate user/group for such downloads, so they can be easily separated from regular p2p and have custom limits set.
#!/bin/sh echo -e "auth <login> <password>\nhttp $1 $2\nexit" |\ ncat <server> 4000 2>&1 >/dev/null