You need to send or receive very simple network traffic but you do not have a tool such as netcat installed.
If you have bash version 2.04+ compiled with
--enable-net-redirections
(it isn’t
compiled this way in Debian and derivatives), you can use
bash itself. The following example is also used in
Finding My IP Address:
$ exec 3<> /dev/tcp/www.ippages.com/80 $ echo -e "GET /simple/?se=1 HTTP/1.0 " >&3 $ cat <&3 HTTP/1.1 200 OK Date: Tue, 28 Nov 2006 08:13:08 GMT Server: Apache/2.0.52 (Red Hat) X-Powered-By: PHP/4.3.9 Set-Cookie: smipcomID=6670614; expires=Sun, 27-Nov-2011 08:13:09 GMT; path=/ Pragma: no-cache Cache-Control: no-cache, must-revalidate Content-Length: 125 Connection: close Content-Type: text/plain; charset=ISO-8859-1 72.NN.NN.225 (US-United States) http://www..com Tue, 28 Nov 2006 08:13:09 UTC/GMT flagged User Agent - reduced functionality
As noted in Redirecting Output for the Life of a Script, it is possible
to use exec to permanently redirect
file handles within the current shell session, so the
first command sets up input and output on file handle 3
. The second line sends a trivial command to
a path on the web server defined in the first command. Note that the
user agent will appear as “-” on the web server side, which is what is
causing the “flagged User Agent” warning. The third command simply
displays the results.
Both TCP and UDP are supported. Here is a trivial way to send syslog messages to a remote server (although in production we recommend using the logger utility, which is much more user friendly and robust):
echo "<133>${0##*/}[$$]: Test syslog message from bash" > /dev/udp/loghost.example.com/514
Since UDP is connectionless, this is actually much easier to use
than the previous TCP example. <133>
is the syslog priority value for
local0.notice, calculated according to RFC 3164. See the RFC “4.1.1 PRI Part” and
logger manpage for details. $0
is the name, so ${0##*/}
is the “basename” and $$
is the process ID of the current program.
The name will be -bash
for a login
shell.
man logger
RFC 3164: The BSD Syslog Protocol, at http://www.faqs.org/rfcs/rfc3164.html
Appendix B, particularly ./functions/gethtml
3.139.83.151