Checking a file existence on a remote SSH server using Python

后端 未结 1 1274
礼貌的吻别
礼貌的吻别 2021-01-05 07:02

I have two servers A and B. I\'m suppose to send, let said an image file, from server A to another server B. But before server A could send the file over I would like to che

相关标签:
1条回答
  • 2021-01-05 07:31

    The os.path functions only work on files on the same computer. They operate on paths, and ubuntu@serverB.com:b.jpeg is not a path.

    In order to accomplish this, you will need to remotely execute a script. Something like this will work, usually:

    def exists_remote(host, path):
        """Test if a file exists at path on a host accessible with SSH."""
        status = subprocess.call(
            ['ssh', host, 'test -f {}'.format(pipes.quote(path))])
        if status == 0:
            return True
        if status == 1:
            return False
        raise Exception('SSH failed')
    

    So you can get if a file exists on another server with:

    if exists_remote('ubuntu@serverB.com', 'b.jpeg'):
        # it exists...
    

    Note that this will probably be incredibly slow, likely even more than 100 ms.

    0 讨论(0)
提交回复
热议问题