Bonjour,
J'essai de bidouiller ce script pour en rendre l'utilisation plus automatisée.
(a lancer avec la commande
./hubic1.pl -l email-inscription-hubiC
J'en suis là:
#!/usr/bin/perl
#
# $Id: hubic.pl 6 2012-02-08 17:46:06Z gomor $
#
package Hubic;
use strict;
use warnings;
use LWP::UserAgent;
## renseignez votre mot de passe d'acces a Hubic
my $password = 'secret';
sub new {
my $self = shift;
my $class = ref($self) || $self;
my %h = (
host => 'ws.ovh.com',
@_,
);
my $ua = LWP::UserAgent->new;
$ua->agent("hubiC/1.0.9 (Windows NT 6.1; fr_FR)");
$h{_ua} = $ua;
return bless(\%h, $class);
}
sub getWebdavInfo {
my $self = shift;
my $id = $self->_postNasLogin;
my $url = $self->_postGetNas($id);
my ($login, $password) = $self->_postGetCredentials($id);
return ($url, $login, $password);
}
sub _postNasLogin {
my $self = shift;
my $ua = $self->{_ua};
my $host = $self->{host};
my $login = $self->{login};
my $password = $self->{password};
my $params = '{"email":"'.$login.'","password":"'.$password.'"}';
# Encode characters if URI::Escape is available
eval("use URI::Escape;");
if (!$@) {
print "[DEBUG] URI::Escape available\n" if $self->{debug};
$params = uri_escape($params);
}
my $req = HTTP::Request->new(
POST => "https://$host/cloudnas/r0/ws.dispatcher/nasLogin",
);
$req->content_type('application/x-www-form-urlencoded');
$req->content('session=¶ms='.$params);
my $res = $ua->request($req);
if (! $res->is_success) {
die("FATAL: postNasLogin() failed:\n[", $res->content, "]\n");
}
my $reply = $res->content;
print "[DEBUG] $reply\n" if $self->{debug};
(my $id = $reply) =~ s/^.*"\s*id\s*?"\s*?:\s*?"\s*(.*?)\s*".*$/$1/;
print "[DEBUG] Got ID [$id]\n" if $self->{debug};
return $id;
}
sub _postGetNas {
my $self = shift;
my ($id) = @_;
my $ua = $self->{_ua};
my $host = $self->{host};
my $req = HTTP::Request->new(
POST => "https://$host/cloudnas/r0/ws.dispatcher/getNas",
);
$req->content_type('application/x-www-form-urlencoded');
$req->content("session=$id");
my $res = $ua->request($req);
if (! $res->is_success) {
die("FATAL: postGetNas() failed:\n[", $res->content, "]\n");
}
my $reply = $res->content;
print "[DEBUG] $reply\n" if $self->{debug};
(my $url = $reply) =~ s/^.*"\s*url\s*?"\s*?:\s*?"\s*(.*?)\s*".*$/$1/;
print "[DEBUG] Got URL [$url]\n" if $self->{debug};
return $url;
}
sub _postGetCredentials {
my $self = shift;
my ($id) = @_;
my $ua = $self->{_ua};
my $host = $self->{host};
my $req = HTTP::Request->new(
POST => "https://$host/cloudnas/r0/ws.dispatcher/getCredentials",
);
$req->content_type('application/x-www-form-urlencoded');
$req->content("session=$id");
my $res = $ua->request($req);
if (! $res->is_success) {
die("FATAL: postGetCredentials() failed:\n[", $res->content, "]\n");
}
my $reply = $res->content;
print "[DEBUG] $reply\n" if $self->{debug};
(my $username = $reply) =~ s/^.*"\s*username\s*?"\s*?:\s*?"\s*(.*?)\s*".*$/$1/;
print "[DEBUG] Got username [$username]\n" if $self->{debug};
(my $secret = $reply) =~ s/^.*"\s*secret\s*?"\s*?:\s*?"\s*(.*?)\s*".*$/$1/;
print "[DEBUG] Got secret [$secret]\n" if $self->{debug};
return ($username, $secret);
}
1;
package main;
use Getopt::Std;
my %opts;
getopts('l:dh', \%opts);
if (!$opts{l} || $opts{h}) {
die("Usage: $0 -l login [-d] [-h]\n");
}
my $hubic = Hubic->new(
login => $opts{l},
password => $password,
debug => $opts{d},
);
my ($hubicUrl, $hubicLogin, $hubicPassword) = $hubic->getWebdavInfo;
print "URL: $hubicUrl\n";
print "Login: $hubicLogin\n";
print "Password: $hubicPassword\n\n";
system "sudo mount -t davfs $hubicUrl /media/hubic -o username=\"$hubicLogin\",uid=1000\n";
exit(0);
Le script exécute le montage directement maintenant, mais je ne parviens pas a indiquer le mot de passe a mount dans cette ligne:
sudo mount -t davfs $hubicUrl /media/hubic -o username="$hubicLogin",uid=1000
J'ai essaye avec pass= et password= sans succès
Il semble que l'usage de mount avec davfs2 diffère de mount tout seul, le man pour mount.davfs me propose ceci qui pourrait etre une solution:
conf=absolute path
An alternative user configuration file. This option is
intended for cases where the default user configuration
file in the users home directory can not be used.
Default: ~/.davfs2/davfs2.conf
Mais je n'ai aucune idée de quoi mettre dans ce fichier davfs2.conf
Quelqu'un saurai comment ajouter le password à cette commande:
sudo mount -t davfs $hubicUrl /media/hubic -o username="$hubicLogin",uid=1000
[edit] ce dit un petit tour
dans la doc de davfs2 devrai pouvoir m'aider :rolleyes: