質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.83%

pythonのparamikoを使ってデータを送りたい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,442

sususu

score 86

いつもお世話になっております。
表題の件の通りでVPS(LOCAL)からレンタルサーバ(REMOTE)にデータを送りたいのですが、エラーが出て遅れません。当該コードは下記のとおりです。

import paramiko

HOST = 'xxxxx'
USER = 'xxxxx'
PSWD = 'xxxxx'

LOCAL_PATH  = "/root/jump/xxxxx/img/test.txt"
REMOTE_PATH = "/root/home/xxxxx/xxxxx/pic/aaa.txt"

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(HOST, username=USER, password=PSWD)

sftp = ssh.open_sftp()
sftp.put(LOCAL_PATH, REMOTE_PATH)
sftp.close()
ssh.close()

エラーは下記のとおりです。

Traceback (most recent call last):
  File "ssh.py", line 15, in <module>
    sftp.put(LOCAL_PATH, REMOTE_PATH)
  File "/usr/lib/python2.7/site-packages/paramiko/sftp_client.py", line 759, in put
    return self.putfo(fl, remotepath, file_size, callback, confirm)
  File "/usr/lib/python2.7/site-packages/paramiko/sftp_client.py", line 714, in putfo
    with self.file(remotepath, "wb") as fr:
  File "/usr/lib/python2.7/site-packages/paramiko/sftp_client.py", line 372, in open
    t, msg = self._request(CMD_OPEN, filename, imode, attrblock)
  File "/usr/lib/python2.7/site-packages/paramiko/sftp_client.py", line 813, in _request
    return self._read_response(num)
  File "/usr/lib/python2.7/site-packages/paramiko/sftp_client.py", line 865, in _read_response
    self._convert_status(msg)
  File "/usr/lib/python2.7/site-packages/paramiko/sftp_client.py", line 896, in _convert_status
    raise IOError(errno.EACCES, text)
IOError: [Errno 13] Permission denied


まずパスなのですが、ファイル名やパスを変更して実行すると『...No such file...』のようなエラーが返ってくるのでパスはあっていると思っているのですが。。。

次にパーミッションのエラーが出ているのでとりあえず下記のように変更しました。
ローカル側
img root root 777
test.txt root root777
リモート側
pic user1 user2 777
とりあえずすべて777にしているのですが結果が変わりません。
実行はrootで行っております。

パイソンのバージョンは3.5をインストールしたのですが下記のコマンドで2と3が両方出てきてしまいます。バージョン2の方で実行してしまっているのが原因だったりするのでしょうか?

[root@python]# python3.5 -V
Python 3.5.5
[root@python]# python -V
Python 2.7.5


どなたかご教授お願いいたします。

追記
レンタルサーバ(REMOTE)のほうにはPUTTYからSSHでログインはできました。
ただユーザーをROOTに変更できず、そのままcd/home/xxxxx/と入力しても拒否されます。
これが関係あるかわかりませんが一応載せさせていただきます。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

REMOTE_PATH = "/root/home/xxxxx/xxxxx/pic/aaa.txt"→
REMOTE_PATH = "/home/xxxxx/xxxxx/pic/aaa.txt"
のように修正したら直りました。

rootを入れてしまっていたせいでパーミッション系のエラーが出ていたのは理解できませんが
一応直りました。

見に来てくださった皆様ありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る