0

I have a python script on a raspberry that take a picture, when I run it with putty foo.jpg is indeed created.

However when I run it using paramiko foo.jpg is not created, but the script run as expected (it prints 'foo.jpg captured').

class RemoteServer():
    def __init__(self, ip, port, username, password):
        self.ip = ip
        self.port = port
        self.username = username
        self.password = password

class RemoteHelper():
    def __init__(self, paramiko_ssh_object):
        self.ssh = paramiko_ssh_object

    def waitForExecCommandEnd(self, channel, command):
        """
        Block untill the end of a command executed by Paramiko.ssh.exec_command
            -channel : (channel) channel stdout returned by Paramiko.ssh.exec_command
            -command : (string) command to run
        """
        while not channel.exit_status_ready():
            print "Waiting for end of {}".format(command)
            time.sleep(1)

    def runRemoteCommand(self, command):
        """
        Run a command on the remote server via ssh and block until it ends
            -command : (string) command to run
        """
        print "running {}".format(command)
        a, stdout, stderr = self.ssh.exec_command(command)
        self.waitForExecCommandEnd(stdout.channel, command)
        for line in stdout.readlines():
            print line
        for line in stderr.readlines():
            print li

def authentificate(ssh, rpi):
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    print "Connection a %s:%s user=%s mdp=XXXXXXXXX" % (rpi.ip, rpi.port, rpi.username)
    ssh.connect(rpi.ip, port=rpi.port, username=rpi.username, password=rpi.password)

rpi = RemoteServer("192.168.1.20", 22, "pi", "raspberry")
ssh = paramiko.SSHClient()
authentificate(ssh, rpi)
remoteHelper = RemoteHelper(ssh)
remoteHelper.runRemoteCommand("sudo python /home/pi/camera/pictaker.py")

And here is the script on the RPI:

#!/usr/bin/env python
# --*-- encoding: utf-8 --*--

from time import sleep
from picamera import PiCamera

#camera conf
camera = PiCamera()
camera.resolution = (2592, 1944)
camera.vflip = True
camera.framerate = 5

#camera warmpup
print "preparing camera"
camera.start_preview()
sleep(2)

#taking pic
camera.capture('foo.jpg')
print "foo.jpg captured"
camera.close()

would it be due to some unix permissions?

Thanks.

1 Answer 1

2

Try:
1) print(camera.capture('foo.jpg') to see if it return 0
2) try to change 'foo.jpg' to '/tmp/foo.jpg', maybe it capture image but save it to same other path and you don't know where
Edit:
3) you can try, but it's not so trivial as above, run sudo strace -f -o /tmp/strace.out . Then you will see is there any 'permission denied' or something else

Sign up to request clarification or add additional context in comments.

1 Comment

foo.jpg was indeed saved elsewhere, using /tmp/foo.jpg solved the problem. (print(camera.capture('foo.jpg') always display 'None', even when it's working)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.