web-dev-qa-db-fra.com

copier le fichier de Windows à Linux

J'écris un script. il exécutera une machine Linux. ses cibles incluent linux, solaris et windows.

Je sais que je peux utiliser scp pour copier des fichiers entre * nix. mais que diriez-vous de copier un fichier à partir de Windows?

Ces fenêtres sont des machines de test sur lesquelles on ne peut pas s'attendre à ce qu'un logiciel spécifique soit installé, car le système d'exploitation peut souvent être réinstallé.

15
Alex

Utilisez Samba .

Samba fournit un service de partage de fichiers compatible avec Windows.

Vous pouvez partager un répertoire (par exemple /srv/samba/sharename) sur votre ordinateur Linux et y accéder à partir de Windows comme suit: \\linuxservername\sharename. Il ne nécessite aucun logiciel supplémentaire du côté Windows.

Samba est inclus dans la plupart des distributions Linux. Installez-le en utilisant le gestionnaire de paquets, par exemple:

  • Ubuntu: Sudo apt-get install samba smbclient

  • SUSE: zypper samba

  • CentOS/RedHat: yum install samba

Pour configurer Samba, voir:

ou recherchez sur Google pour trouver un guide pour votre distribution.

Notez que vous devrez peut-être configurer votre pare-feu Linux, si vous en utilisez un, pour accepter les connexions aux ports 137/tcp, 138/tcp, 139/tcp et 445/tcp (voir this et this ).


Dans la description ci-dessus, l'ordinateur Linux est un serveur Samba et Windows monte un partage à partir de celui-ci.

Dans votre commentaire ci-dessous , vous indiquez que vous souhaitez automatiser le processus de transfert . Cela peut être réalisé en inversant les rôles afin que Windows agisse en tant que serveur et que Linux s'y connecte via smbclient.

Avec smbclient, vous n'avez pas du tout besoin de monter le partage Windows. Par exemple, pour récupérer C:\Directory\file.txt et le copier dans /tmp sur votre ordinateur Linux, procédez comme suit:

smbclient '//windowsserver/c$' -c 'lcd /tmp; cd Directory; get file.txt' -U administrator%password

-c Commande à exécuter. Voir man smbclient pour plus de détails.

-U Nom d'utilisateur et mot de passe pour accéder au partage spécifié en tant que username%password

Modifiez-le selon vos besoins et ajoutez-le à votre script.

20
jaume

Je sais que vous avez dit que vous ne pouvez pas vous attendre à ce qu'un logiciel spécifique soit installé, mais il existe des clients SSH/SCP/SFTP pour Windows qui ne nécessitent aucune installation particulière; seul l'exécutable étant disponible. L'un de ceux sur lequel je continue à me tourner est PuTTY avec ses outils compagnons pscp et psftp, mais je suis certain que des alternatives existent. pscp et psftp peuvent être entièrement pilotés à partir de la ligne de commande et conviennent donc parfaitement aux tâches d'automatisation. Les deux d'entre eux ont même un commutateur -batch qui est décrit comme "désactiver toutes les invites interactives" et qui peut presque certainement être exploité.

Comme vous avez probablement déjà un serveur SSH/SCP/SFTP installé et configuré sur le serveur, vous évitez d'installer des logiciels sur l'un ou l'autre hôte uniquement pour copier ces fichiers.

Un autre avantage pourrait être le fait que PuTTY est open source avec une licence permissive. Par conséquent, s'il ne fait pas ce que vous voulez tout de suite, il devrait être relativement facile de le faire agir comme vous le préférez.

2
a CVn

Je suis un utilisateur CentOS 6 alors j'ai essayé cette méthode sur CentOS 6

Installez samba en utilisant

[root @ server ~] # yum installez samba

Requête pour confirmer

 [root @ server ~] # rpm -qa samba 
 samba-3.5.10-125.el6.i686 

Créez un utilisateur Samba.

[root @ server ~] # useradd sambashare

Créez maintenant un mot de passe samba pour le nom d'utilisateur sambashare à l'aide de la commande smbpasswd.

 [root @ server ~] # smbpasswd -a sambashare 
 Nouveau SMB mot de passe: 
 Retapez le nouveau SMB mot de passe: 
 Utilisateur sambashare ajouté. 

Créer un répertoire de partage samba

[racine @ serveur ~] # mkdir/share

changer la propriété du dossier partagé

[root @ server ~] # chown -R sambashare: sambashare/share /

Ouvrez le fichier /etc/samba/smb.conf et ajoutez les lignes ci-dessous.

 [share] 
 comment = Share 
 path = /share
writable = yes 
 utilisateurs valides = sambashare 

Démarrer le service samba

 [racine @ serveur ~] # service smb redémarrer 
 Arrêter SMB services: [OK] 
 Démarrer SMB services: [ D'ACCORD  ]

Vérifiez votre configuration à l'aide de la commande testparm

. 
. 
 [partager] 
 comment = partager 
 chemin =/partager> .____. utilisateurs valides = sambashare 
 lecture seule = Non 

Dans le système Windows, tapez ceci dans run

enter image description here

Maintenant, entrez le nom d'utilisateur et le mot de passe samba

enter image description here

Vous avez terminé

enter image description here

1
max