私はデスクトップ環境ではなく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
一部のコマンドは役に立ちません。
次の手順に進みます。
必要なパッケージをインストールします。
apt-get インストール dbus-x11 gvfs-bin gvfs-fuse gvfs-backends
.gvfs フォルダがない場合は、新規作成します。
mkdir $HOME/.gvfs
dbusセッションを開始して
DBUS_SESSION_BUS_ADDRESS
再利用できるように保存します。dbus-launch --sh-syntax > "$HOME/.dbus_settings"
DBUS_SESSION_BUS_ADDRESS
たとえば、エクスポートsource
ソース "$HOME/.dbus_settings"
ちょうどgvfs-mountを使ってマウントしてください。
gvfsのインストールftp://myftpuser@myftpserver
シェルからパスワードの入力を求められます。パスワードを含むファイルを生成し、それをgvfs-mountに提供して、コマンドを次のようにすることもできます。
gvfs-mount ftp://myftpuser@myftpserver < file_containing_my_ftp_password
次の場所から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