net/ssh exec builtin command (cd)

U

Une Bévue

when using ssh.exec!("ls -al") everything is ok however, if i try to use
"cd /path/to" (a shell builtin command) i get back :
exec: 4: cd: not found

on the device a "which cd" returns nothing.

is there a workaround ?
 
P

Peña, Botp

From: Une B=E9vue [mailto:[email protected]]=20
# when using ssh.exec!("ls -al") everything is ok however, if i=20
# try to use
# "cd /path/to" (a shell builtin command) i get back :
# exec: 4: cd: not found
# on the device a "which cd" returns nothing.
# is there a workaround ?

show net/ssh version and code pls.

eg, i just run this,

Net::SSH.start( "10.2.10.1", "botp:)", :password=3D>"secret=3D)") do =
|session|
puts session.exec! "cd /etc; ls -la"
end

outputs=3D>
(irb):57: warning: parenthesize argument(s) for future version
total 1220
drwxr-xr-x 100 root root 8192 2008-06-25 19:40 .
drwxr-xr-x 30 root root 4096 2008-06-25 18:50 ..
-rw-r--r-- 1 root root 2149 2006-04-07 16:16 adduser.conf
-rw-r--r-- 1 root root 44 2008-06-25 19:37 adjtime
-rw-r--r-- 1 root root 65 2006-04-28 18:52 aliases
-rw-r--r-- 1 root root 12288 2008-05-05 15:29 aliases.db
drwxr-xr-x 2 root root 8192 2008-06-25 18:53 alternatives
....

<snipped>

works, right?

kind regards -botp
 
U

Une Bévue

Peña said:
show net/ssh version and code pls.

net/ssh 2.0.3
net/scp 1.0.1

--- ssh_exec_ls.rb -----------------------------------------------------
#! /usr/bin/env ruby

require 'net/ssh'

result=""
options={
:config => false,
#:config => "/Users/yt/.ssh/ssh_config",
:paranoid => false,
#:verbose => :debug,
:auth_methods => ["publickey"],
:user_known_hosts_file => "/Users/yt/.ssh/known_hosts",
:keys => ["/Users/yt/.ssh/id_dsa"],
:passphrase => "A very vety long passphrase.",
:port => 2222
}
Net::SSH.start("169.254.0.2", "root", options) do |session|
result=session.exec!("cd /mnt/fat;ls -Al")
end

puts result
--- /ssh_exec_ls.rb ----------------------------------------------------
eg, i just run this,

Net::SSH.start( "10.2.10.1", "botp:)", :password=>"secret=)") do |session|
puts session.exec! "cd /etc; ls -la"
end

about the same except authentification by passphrase.
works, right?

i got :
$ ./ssh_exec_ls.rb
exec: 4: cd: not found


if, by command line, i log into the device :
$ ./ssh_connect.zsh open
Enter passphrase for /Users/yt/.ssh/id_dsa:
Identity added: /Users/yt/.ssh/id_dsa (/Users/yt/.ssh/id_dsa)
[...]
Last login: Sat Jul 26 08:57:20 UTC 2008
# cd /mnt/fat
# ls -Al
-rwxr-xr-x 1 root root 6148 Jul 23 10:04 .DS_Store
[...]
-rwxr-xr-x 1 root root 16384 Jul 19 07:52 x-loader.bin
# which cd
#

notice "which cd" returns nothing, this is a builtin shell command.

for example on MacOS X :
$ which cd
cd: shell built-in command

i should mention the remote device is a handheld phone running linux
Kernel 2.4.x (QTopia over OMAP 730 from TI)


also, I've a lot of "SCP did not finish successfully" not repeatable.
those scp errors are only reported when using ruby (net/ssh + net/scp)
but not when using my zsh script.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top