GVFSを使用してコマンドラインからFTPをマウントする

GVFSを使用してコマンドラインからFTPをマウントする

私はデスクトップ環境ではなくDebian Jessieを使用しています。私はコマンドラインからFTPをマウントするためにgvfs-mountを使ってみました。

私はオンラインでいくつかの情報を収集し、gvfsがdbusと通信していることを知りました。

だから私の最初のステップはdbusとgvfsに必要なパッケージのインストール:

apt-get install dbus-x11 gvfs-bin gvfs-fuse

その後、dbusが独自のサービスをインストールしたので、再起動しました。

その後www-dataでログインしました。

sudo -Hu www-data -s /bin/bash

-s /bin/bashユーザーにbashがないため)

ここでは、gvfsがデーモンと通信できるように、dbus-daemonユーザーの結果を開始してエクスポートする必要があります。DBUS_SESSION_BUS_ADDRESSだから私はこうします:

dbus-launch --sh-syntax > "$HOME/.dbus_settings"

.dbus_settings次のようなコンテンツが含まれています。

cat .dbus_settings 
DBUS_SESSION_BUS_ADDRESS='unix:abstract=/tmp/dbus-XwbyV2BmA5,guid=6c111d728c263543b61e6293570e1f22';
export DBUS_SESSION_BUS_ADDRESS;
DBUS_SESSION_BUS_PID=952;

DBUS_SESSION_BUS_ADDRESS現在の環境変数は設定されていないため、以下を実行します。

export DBUS_SESSION_BUS_ADDRESS='unix:abstract=/tmp/dbus-XwbyV2BmA5,guid=6c111d728c263543b61e6293570e1f22'

将来のgvfsインストールを処理するための.gvfsユーザーフォルダを作成しました$HOME(www-data /var/www

これで、(わかりませんが)gvfsを使用する準備ができているようです。だから私は発射するgvfsdヒューズこのように:

/usr/lib/gvfs/gvfsd-fuse $HOME/.gvfs -o big_writes

これはうまくいくようです。 $HOME/.gvfsフォルダがマウントされているように見えます(しかしまだ何もありません)。

最後のコマンドは有効なFTPマウントです。

gvfs-mount ftp://myftpuser@myftpserver < file_containing_ftp_password

ただし、常に次のエラーが発生します。

Error mounting location: Location is not mountable

このステップは私のLinux Mint 17.3 amd64デスクトップで動作します。ただし、Debian Jessieサーバー(デスクトップとx11なし)では機能しません。

助けてくれてありがとう。

答え1

問題を発見しました。パッケージが欠落しており、gvfs-backends一部のコマンドは役に立ちません。

次の手順に進みます。

  1. 必要なパッケージをインストールします。

    apt-get インストール dbus-x11 gvfs-bin gvfs-fuse gvfs-backends

  2. .gvfs フォルダがない場合は、新規作成します。

    mkdir $HOME/.gvfs

  3. dbusセッションを開始してDBUS_SESSION_BUS_ADDRESS再利用できるように保存します。

    dbus-launch --sh-syntax > "$HOME/.dbus_settings"

  4. DBUS_SESSION_BUS_ADDRESSたとえば、エクスポートsource

    ソース "$HOME/.dbus_settings"

  5. ちょうどgvfs-mountを使ってマウントしてください。

    gvfsのインストールftp://myftpuser@myftpserver

シェルからパスワードの入力を求められます。パスワードを含むファイルを生成し、それをgvfs-mountに提供して、コマンドを次のようにすることもできます。

gvfs-mount ftp://myftpuser@myftpserver < file_containing_my_ftp_password
  1. 次の場所からFTPインストールにアクセスしてください。

    cd $HOME/.gvfs/ftp:ホスト\=myftpserver\, ユーザー\=myftpuser/

完璧!

答え2

それを使用するのが最善です。dbus-run-session some-script.shその後、gio mountそれを呼び出すか、他のジオツールを呼び出すことができますsome-script.sh

dbus-run-sessionは、スクリプトの実行後にdbus-daemonを終了します。または、.dbus-run-sessionを使用している場合は、dbus-daemonを手動で終了する必要がありますdbus-launch

dbus-run-sessionを使用することは、別のスクリプトを作成してdbus-run-sessionコマンドで呼び出す必要があるため、少し面倒です。

次のことができます。

#!/bin/sh

sed '1,/^exit$/d' $0 | dbus-run-session sh
exit

ftp_url=ftp://[email protected]/
ftp_password=password
echo $ftp_password | gio mount $ftp_url

ftp_gio_name=$(
    gio info $ftp_url | awk '$1 == "id::filesystem:" { print $2 }'
)
ftp_gio_path=$HOME/.gvfs/"$ftp_gio_name"
archive_path=$HOME/data

cp --archive --verbose --update \
   "$ftp_gio_path"/ \
   $archive_path

gio mount -u $ftp_url

または尾を使用してください。

#!/bin/sh
tail +4 $0 | dbus-run-session sh
exit

# script here

またはheredocを使用してください:

dbus-run-session sh <<DBUS_SESSION

# script here
# but you need to escape $ and \

foo=bar
echo \$foo
touch white\\ space

DBUS_SESSION

関連情報