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