저는 데스크톱 환경이 아닌 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