Remote shell problems.
Denys Vlasenko
vda.linux at googlemail.com
Thu Feb 2 10:38:58 UTC 2012
On Thu, Feb 2, 2012 at 8:27 AM, Jonathan Andrews <jon at jonshouse.co.uk> wrote:
> >From Linux PC end, telnet to arm board
>
> [root at jonspc arm-many-voices]# rpm -qa |grep 'telnet'
> telnet-0.17-45.fc12.i686
> [root at jonspc arm-many-voices]# uname -a
> Linux jonspc 2.6.32.26-175.fc12.i686 #1 SMP Wed Dec 1 21:52:04 UTC 2010
> i686 athlon i386 GNU/Linux
>
> [root at jonspc sources]# telnet 10.10.10.111 2222
> Trying 10.10.10.111...
> Connected to 10.10.10.111.
> Escape character is '^]'.
>
> /bin/bash: line 1: $'\r': command not found
> ls
> /bin/bash: line 2: $'ls\r': command not found
>
>
>
> strace from arm board itself
>
> rcS-4.2# strace nc -l -p 2222 -e /bin/bash
> execve("/sbin/nc", ["nc", "-l", "-p", "2222", "-e", "/bin/bash"], [/* 9 vars */]) = 0
> uname({sys="Linux", node="(none)", ...}) = 0
> brk(0) = 0x2010000
> brk(0x2010cb2) = 0x2010cb2
> set_tls(0x2010450, 0x183018, 0, 0x1, 0x2010450) = 0
> brk(0x2031cb2) = 0x2031cb2
> brk(0x2032000) = 0x2032000
> getuid32() = 0
> socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
> setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
> bind(3, {sa_family=AF_INET, sin_port=htons(2222), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
> listen(3, 1) = 0
> fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
> accept(3, 0, NULL) = 4
> dup2(4, 0) = 0
> close(4) = 0
> dup2(0, 1) = 1
> dup2(0, 2) = 2
> execve("/bin/bash", ["/bin/bash"], [/* 9 vars */]) = 0
> uname({sys="Linux", node="(none)", ...}) = 0
> brk(0) = 0x542000
> brk(0x542c9c) = 0x542c9c
> set_tls(0x542450, 0x145408, 0, 0x1, 0x542450) = 0
> brk(0x563c9c) = 0x563c9c
> brk(0x564000) = 0x564000
> open("/dev/tty", O_RDWR|O_NONBLOCK|O_LARGEFILE) = -1 ENXIO (No such device or address)
> ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0xbefebc8c) = -1 EINVAL (Invalid argument)
> getuid32() = 0
> getgid32() = 0
> geteuid32() = 0
> getegid32() = 0
> time(NULL) = 4390
> ioctl(0, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, 0xbefebd88) = -1 EINVAL (Invalid argument)
> open("/proc/meminfo", O_RDONLY) = 3
> fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
> old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40040000
> read(3, "MemTotal: 60544 kB\nMemF"..., 1024) = 924
> close(3) = 0
> munmap(0x40040000, 4096) = 0
> rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTART|0x4000000}, {SIG_DFL, [], 0}, 8) = 0
> rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_RESTART|0x4000000}, {SIG_DFL, [], SA_RESTART|0x4000000}, 8) = 0
> rt_sigaction(SIGINT, {SIG_DFL, [], 0x4000000 /* SA_??? */}, {SIG_DFL, [], 0}, 8) = 0
> rt_sigaction(SIGINT, {SIG_DFL, [], 0x4000000 /* SA_??? */}, {SIG_DFL, [], 0x4000000 /* SA_??? */}, 8) = 0
> rt_sigaction(SIGQUIT, {SIG_DFL, [], 0x4000000 /* SA_??? */}, {SIG_DFL, [], 0}, 8) = 0
> rt_sigaction(SIGQUIT, {SIG_DFL, [], 0x4000000 /* SA_??? */}, {SIG_DFL, [], 0x4000000 /* SA_??? */}, 8) = 0
> rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
> rt_sigaction(SIGQUIT, {SIG_IGN, [], 0x4000000 /* SA_??? */}, {SIG_DFL, [], 0x4000000 /* SA_??? */}, 8) = 0
> rt_sigaction(SIGINT, {0x3c504, [], 0x4000000 /* SA_??? */}, {SIG_DFL, [], 0x4000000 /* SA_??? */}, 8) = 0
> uname({sys="Linux", node="(none)", ...}) = 0
> stat64("/dev", {st_mode=S_IFDIR|0755, st_size=69632, ...}) = 0
> stat64(".", {st_mode=S_IFDIR|0755, st_size=69632, ...}) = 0
> getpid() = 407
> getppid() = 406
> gettimeofday({4390, 350898}, NULL) = 0
> fcntl64(0, F_GETFL) = 0x2 (flags O_RDWR)
> fstat64(0, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0
> _llseek(0, 0, 0xbefebd54, SEEK_CUR) = -1 ESPIPE (Illegal seek)
> wait4(-1, 0xbefebcd4, WNOHANG, NULL) = -1 ECHILD (No child processes)
> read(0, "\r", 1) = 1
> read(0, "\n", 1) = 1
> stat64(".", {st_mode=S_IFDIR|0755, st_size=69632, ...}) = 0
> stat64("/sbin/\r", 0xbefebbd0) = -1 ENOENT (No such file or directory)
Your telnet client sends CR+LF when you press <Enter>, not mere LF.
Either use nc as client too, or use telnetd as the server.
--
vda
More information about the busybox
mailing list