Mon hôte permet un accès limité aux commandes SSH et Linux. Cependant, je ne peux pas utiliser wget crois-le ou non. P>
J'espérais avoir quelque chose à télécharger un fichier (.flv) d'un autre serveur. Y a-t-il une autre commande que je peux essayer? P>
S'il n'y a pas, je pouvais probablement utiliser Python, Perl ou PHP (Favoris) pour obtenir un téléchargement de fichier. Est-ce possible? P>
11 Réponses :
lynx -source code> p>
Si vous essayez de télécharger un fichier à partir d'un hôte, vous avez un accès authentifié à, essayez d'utiliser SCP code>. C'est comme une copie normale mais elle est faite à travers un tunnel SSH. J'ai trouvé que les hôtes qui permettent "Limité SSH" autorisent souvent toujours
SCP code>.
scp user@myhost.com:folder/file.flv ./
ABS indique clairement que c'est d'un autre serveur.
@Randolpho - Ummm, SCP vous permet de copier d'un autre serveur. C'est la seule fonction de SCP.
@SheepSimulator: Vous ne pouvez utiliser SCP que si vous avez Accès i> sur le serveur distant, c'est-à-dire un hôte sur lequel vous avez un compte. Je crois que les ABS n'ont pas tel. Cela dit, lors d'une deuxième lecture de la question, il pourrait être interprété que ABS a accès à l'hôte distant. Basé sur cela, je n'ai annulé mon bowvote.
@Randolpho, j'ai trouvé que la question était plutôt ambiguë pour savoir s'il avait authentifié un accès ou non. Je viens de donner mes deux cents. Merci d'avoir retiré le bowvote quand même :)
curl -C - -O http://www.url.com
echo -ne "GET /path/to/file HTTP/1.0\r\nHost: www.somesite.com\r\n\r\n" | nc www.somesite.com 80 | perl -pe 'BEGIN { while (<>) { last if $_ eq "\r\n"; } }'
C'est clairement épique, mais il semble courir et ne fournir aucun rétroaction.
Je n'ai jamais dit que c'était un très / bon / option. Mais si vous avez NETCAT et PERL ... (cependant, utiliser LWP :: Simple serait probablement mieux si vous avez Perl. Cela pourrait être changé pour utiliser SED ou AWK ou quelque chose de suffisamment facilement)
Vous pouvez le faire théoréticaly sans Netcat et sans Perl-Bash contient des redirections TCP et SED peut effacer l'en-tête. Mais je n'ai vraiment pas envie de l'écrire :-) Regardez ici: thesmithfam.org/blog/2006/05/23/...
GNU AWK a aussi des redirections TCP :) @cube: Je n'ai pas vu votre commentaire quand j'ai écrit ma réponse ci-dessous, mais c'est à peu près la même chose que ce que j'ai fait.
@cube, un certain nombre de distributions (y compris Debian) désactivent les redirections Bash TCP - après tout, cela voler une partie de l'espace de noms de fichiers de systèmes de fichiers
@bdonlan: ou pour la sécurité ou la taille ou quelque chose comme ça, plus probable. Ce n'est pas comme "Voler" / dev / {TCP, UDP} / * / * code> montre quand il n'y a pas de périphériques avec ces noms.
différentes manières, p>
script python: où sys.argv [1] code> est l'URL qui vous intéresse. p> p>
BASH compilé avec - Activer-Net-Redirections Code > est assez puissant. ( ZSH a des caractéristiques similaires.) Heck, je vais même lancer http Basic Auth ici, aussi. Bien sûr, ce n'est pas un très bon client HTTP / 1.1; Il ne supporte pas le codage à mort, par exemple. Mais c'est assez rare dans la pratique. P>
read_http() {
local url host path login port
url="${1#http://}"
host="${url%%/*}"
path="${url#${host}}"
login="${host%${host#*@}}"
host="${host#${login}@}"
port="${host#${host%:*}}"
host="${host%:${port}}"
(
exec 3<>"/dev/tcp/${host}/${port:-80}" || exit $?
>&3 echo -n "GET ${path:-/} HTTP/1.1"$'\r\n'
>&3 echo -n "Host: ${host}"$'\r\n'
[[ -n ${login} ]] &&
>&3 echo -n "Authorization: Basic $(uuencode <<<"${login}")"$'\r\n'
>&3 echo -n $'\r\n'
while read line <&3; do
line="${line%$'\r'}"
echo "${line}" >&2
[[ -z ${line} ]] && break
done
dd <&3
)
}
Vous pouvez utiliser la commande suivante: p>
curl -o http://www.domain.com/file.flv code> p>
Pourquoi l'OP a-t-il accepté cette réponse? Beaucoup d'autres ont mentionné Curl il y a longtemps et à top tout excéder la commande exacte donnée ici est incorrecte. Bizarre.
Bonjour, vous devriez lire: homme curl. -O signifie écrire un fichier de sortie sur le disque au lieu de le donner à stdout. :)
Je dois encourager les débutants!
Vous économiser des problèmes, Coller de la page de l'homme sous-vers: "Écrivez la sortie dans un fichier local nommé comme le fichier distant que nous obtenons." C'est ce que l'OP a demandé et il me perturbe pourquoi vous pensez que c'est incorrect. Aussi je l'ai testé et cela se comporte comme prévu.
Utilisez SCP. P>
Utilisation: SCP [-1246BCPQRV] [-C Cipher] [-f ssh_config] [-I Identity_file]
[-L LIMITE] [-O SSH_OPTION] [-P Port] [-S Program]
[[Utilisateur @] hôte1:] File1 ... [[[User @] Host2:] File2 P> blockQuote>
Pouvez-vous expliquer pourquoi vous ne pouvez pas utiliser wget?
J'ai déjà vu ça; Certaines sysadmines le bloqueront en fait de la conviction que ne pas avoir accès à celui-ci est "plus sécurisé". Il peut y avoir d'autres raisons, mais c'est celui que je vois habituellement.