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é.
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:
SUSE: http://doc.opensuse.org/documentation/html/openSUSE/opensuse-reference/cha.samba.html
CentOS/RedHat: http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-samba-configuring.html
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.
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.
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
Maintenant, entrez le nom d'utilisateur et le mot de passe samba
Vous avez terminé