CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Script upload fichier

Auseiodflvkl
Auseiodflvkl
Niveau 7
18 janvier 2022 à 22:11:25

J'ai un serveur A et un serveur B et je veux que A upload un fichier sur B via un script (php / bash / python). Contrainte : je vais exécuter le script de A via un cron et je ne peux installer aucun package sur A.

J'ai tenté en bash avec la commande sftp mais je ne peux pas renseigner le mdp du serveur B dans le script.

J'ai tenté en php de faire du curl avec l'url sftp mais je n'ai pas réussi non plus. J'obtiens « Erreur : 2 ».

function upload($fichier)
{
	$ch = curl_init();
	$fp = fopen($fichier, 'r');
	curl_setopt($ch, CURLOPT_URL, "sftp://11.22.33.44/var/www/html/a.zip");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
	curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
	curl_setopt($ch, CURLOPT_USERPWD, 'user:pwd111');
	curl_setopt($ch, CURLOPT_UPLOAD, 1);
	curl_setopt($ch, CURLOPT_INFILE, $fp);
	curl_setopt($ch, CURLOPT_INFILESIZE, filesize($fichier));
	$result = curl_exec($ch);
	$error_no = curl_errno($ch);
	curl_close($ch);
	
	if ($error_no == 0) {
		echo('Envoyé');
	} else {
		echo('Erreur : '.$error_no);
	}
}

upload('a.zip');

J'ai ensuite tenté une page envoi.php sur B.

<?php
    $currentDirectory = getcwd();
    $uploadDirectory = "/uploads/";

    $errors = []; // Store errors here

    $fileExtensionsAllowed = ['zip','rar','tar.gz'];

    $fileName = $_FILES['the_file']['name'];
    $fileSize = $_FILES['the_file']['size'];
    $fileTmpName  = $_FILES['the_file']['tmp_name'];
    $fileType = $_FILES['the_file']['type'];
    $fileExtension = strtolower(end(explode('.',$fileName)));

    $uploadPath = $currentDirectory . $uploadDirectory . basename($fileName); 

    if (isset($_POST['submit'])) {

      if (! in_array($fileExtension,$fileExtensionsAllowed)) {
        $errors[] = "This file extension is not allowed. Please upload a JPEG or PNG file";
      }

      if ($fileSize > 4000000) {
        $errors[] = "File exceeds maximum size (4MB)";
      }

      if (empty($errors)) {
        $didUpload = move_uploaded_file($fileTmpName, $uploadPath);

        if ($didUpload) {
          echo "The file " . basename($fileName) . " has been uploaded";
        } else {
          echo "An error occurred. Please contact the administrator.";
        }
      } else {
        foreach ($errors as $error) {
          echo $error . "These are the errors" . "\n";
        }
      }

    }
?>

Ça fonctionne quand j'y envoie un fichier via un form html. Mais je n'y arrive pas avec un script php. :(
Ça fait des années que j'ai pas fait de php et de bash, je suis un peu paumé. Vous auriez des idées ?

Quentaing
Quentaing
Niveau 6
18 janvier 2022 à 22:46:22

J'ai plus le code, mais j'avais déjà fait un truc similaire en python avec la lib réseau de base sockets, ça peut être une solution. C'est plutôt bas niveau pour du python mais c'est faisable.

Salut-les-khey3
Salut-les-khey3
Niveau 8
19 janvier 2022 à 09:38:56

J'en ai eu besoin y'a pas longtemps en bash et j'ai utilisé la commande scp en me connectant par clé SSH

scp "C:\Users\cheminFichierLocal" Identifiant@Hote:cheminDuFichierUpoladSurServeur
Ardfhgjgcfs
Ardfhgjgcfs
Niveau 6
20 janvier 2022 à 10:18:50

Finalement je n'ai plus besoin de faire ça. Merci pour vos suggestions. :oui:

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment