copier le fichier de Windows vers Linux


16

J'écris un script. il exécutera une machine Linux. ses objectifs comprennent 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, qui ne peuvent pas être supposées avoir un logiciel spécifique installé, car le système d'exploitation peut être réinstallé souvent.

Réponses:


21

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 ceci: \\linuxservername\sharename. Il n'a pas besoin de logiciel supplémentaire du côté Windows.

Samba est inclus dans la plupart des distributions Linux. Installez-le à l'aide du gestionnaire de packages, 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 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 ceci et cela ).


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

Dans votre commentaire ci-dessous, vous mentionnez que vous souhaitez automatiser le processus de transfert . Ceci peut être réalisé en inversant les rôles afin que Windows agisse comme serveur et que Linux s'y connecte à l'aide smbclient.

Avec, smbclientvous n'avez pas du tout besoin de monter le partage Windows. Par exemple, pour le récupérer C:\Directory\file.txtet le copier /tmpsur votre ordinateur Linux, procédez comme suit:

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

-cCommande à exécuter. Voir man smbclientpour plus de détails.

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

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


@max, Merci pour vos bonnes réponses. Je sais que la samba peut fonctionner avec Windows. Mais il a toujours besoin de l'implication de l'être humain lors de la copie d'un fichier. Comme mon script s'exécutera sur un seul linux et que la machine a installé samba, comment puis-je laisser le seul script faire le travail de copie? Il semble que je ferais mieux de monter le disque Windows sur Linux, alors je peux y accéder sous Linux. La samba peut-elle faire ça?
Alex

Oui, Samba peut le faire. Encore mieux, vous n'avez pas du tout besoin de monter le partage Windows. Vous pouvez utiliser smbclientpour vous connecter au partage Windows, copier un fichier et vous déconnecter. J'ai édité ma réponse, regardez-la.
jaume

Je vous en prie, je suis content d'avoir pu aider.
jaume

1
En particulier, l' -coption vaut la peine d'être utilisée dans des cas simples. Sur ma machine, le mot de passe se présente comme un simple argument (sans aucune option). Et d'ailleurs - je préfère garder les informations d'identification loin des lecteurs de ligne de commande (en utilisant psou [h]top, par exemple), en appelant -U $(cat .username) $(cat .password).
Tomasz Gandor

3

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. Je continue de me tourner vers PuTTY avec son compagnon pscpet ses psftpoutils, mais je suis certain qu'il existe des alternatives. pscpet psftppeut être entièrement piloté à partir de la ligne de commande et convient donc parfaitement aux tâches d'automatisation. Les deux ont même un -batchcommutateur qui est décrit comme «désactiver toutes les invites interactives» et peut presque certainement être exploité.

Étant donné que vous avez probablement déjà un serveur SSH / SCP / SFTP installé et configuré sur le serveur, cela évite d'avoir à installer un logiciel sur l'un ou l'autre hôte uniquement dans le but de copier ces fichiers.

Un autre avantage pourrait être le fait que PuTTY est open source sous une licence permissive, donc s'il ne fait pas ce que vous voulez directement, il devrait être relativement facile de le faire agir comme vous le souhaitez.


1
Merci pour votre recommandation. Je vais essayer pscp et psftp. Ce sont aussi d'excellents outils.
Alex

1

Je suis un CentOS 6utilisateur, j'ai donc essayé cette méthode surCentOS 6

Installez samba en utilisant

[root @ server ~] # yum install samba

Demande de confirmation

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

Créez un utilisateur Samba.

[root @ server ~] # useradd sambashare

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

[root @ server ~] # smbpasswd -a sambashare
Nouveau mot de passe SMB:
Retapez le nouveau mot de passe SMB:
Ajout de l'utilisateur sambashare.

Créer un répertoire de partage samba

[root @ server ~] # mkdir / share

changer la propriété du dossier de partage

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

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

[partager]
comment = Partager
chemin = / partager
inscriptible = oui
utilisateurs valides = sambashare

Démarrer le service Samba

[root @ server ~] # service redémarrage smb
Arrêt des services SMB: [OK]
Démarrage des services SMB: [OK]

Vérifiez votre configuration à l'aide de la testparmcommande

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

Dans le système Windows, tapez ceci dans run

entrez la description de l'image ici

Entrez maintenant le nom d'utilisateur et le mot de passe samba

entrez la description de l'image ici

Vous avez terminé

entrez la description de l'image ici


Merci beaucoup, max. pour votre tutoriel très vivant pour un débutant.
Alex

@Alex vous êtes les bienvenus ... :-)
max
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.