国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison Tutoriel système Linux Scripting SFTP tolérant aux défauts - Reryant les transferts échoués automatiquement

Scripting SFTP tolérant aux défauts - Reryant les transferts échoués automatiquement

Mar 18, 2025 am 10:48 AM

Scripting SFTP tolérant aux défauts - Reryant les transferts échoués automatiquement

introduction

Les architectures de réseau modernes sont construites sur des supports de transmission peu fiables. Le dispositif de routage peut éliminer, corrompre, réorganiser ou copier les données transmises à volonté. La couche IP dans la pile de protocole TCP / IP comprend qu'elle ne peut garantir la précision des données. Aucun réseau IP ne peut affirmer qu'il est 100% fiable.

La couche TCP agit comme le gardien au-dessus de la couche IP pour s'assurer que les données qu'elle génère est correcte. Ceci est réalisé grace à une variété de techniques, et parfois les données sont délibérément perdues pour déterminer les limitations du réseau. La plupart des gens savent probablement que TCP fournit un réseau basé sur la connexion en plus des réseaux sans connectivité IP (qui peuvent et rejeter le trafic à volonté) et garantisse la livraison de données.

Fait intéressant, notre outil de transfert de fichiers n'est pas aussi puissant que lorsqu'il est confronté à une connexion TCP déconnectée. Semblable à ses ancêtres et à des protocoles similaires, le protocole SFTP ne fonctionne pas pour se remettre de l'erreur TCP qui fait fermer la connexion. Il existe des outils qui résolvent le problème de défaillance du transfert (RegET et rapport), mais ces outils ne sont pas automatiquement déclenchés dans les sessions TCP régénérées (les outils qui nécessitent cette propriété se transforment généralement en NFS, mais cela nécessite des privilèges et une configuration de schéma). Si ces outils deviennent soudainement courants, les utilisateurs et les administrateurs réseau seront extatiques.

Ce que SFTP peut fournir est un état de retour, un entier, qui indique le succès lorsque sa valeur est nulle. Il ne renvoie pas l'état par défaut pour le transfert de fichiers, mais renvoie uniquement l'état lorsqu'il est appelé en mode batch. Ce statut de retour peut être capturé par le shell POSIX et réessayer lorsqu'il est non nul. Même sur Windows, avec BusyBox (ou même PowerShell, une fonctionnalité limitée), cette vérification peut être effectuée à l'aide du port OpenSSH de Microsoft. Les scripts Shell POSIX sont très simples, mais pas courants. Changeons cela.

Détection de défaut à l'aide de la coque POSIX

La mise en ?uvre principale de la tolérance aux pannes SFTP n'est pas particulièrement importante, mais la garantie en mode batch et le traitement des entrées standard ajoutent une certaine longueur et complexité, comme le montre l'environnement Windows ci-dessous.

 #! / bin / sh

set -eu # shell strict mode tvar = 1

Pour Param # Confirmer le mode de lot Sftp Do Case "$ param" dans [-] b *) tvar = ;;
fait

[-n "$ tvar"] && {printf '% s: doit être appelé avec -b \ n' "$ {0 ## * /}";

Si [-T 0] # Enregistrer Stdin à moins que tvar = / dev / null sur le terminal
else tvar = "$ (mktemp -t sftpft-xxxxxx)"
     Cat> "$ tvar"
     Si [-s "$ tvar"] # économisez uniquement lorsque stdin n'est pas vide, piégeant "rm -v \" $ tvar \ "" sortir abt int kill terme # effacer else rm "$ tvar" lors de la sortie 
          tvar = / dev / null
     FI
FI

Jusqu'à ce que sftp "$ @"  & 2
fait

Il y a certaines subtilités dans l'utilisation de ce wrapper SFTP, ce qui signifie que le retour pour détecter les erreurs n'est pas la valeur par défaut. Afin until déclencher une nouvelle tentative sur une erreur de données, l'option -b doit être transmise et d'autres contr?les peuvent être utilisés dans le script de commande de lots pertinent pour configurer la réponse d'erreur. Le rapport de réussite à l'état zéro qui a échoué en raison d'autorisations insuffisantes est facile à démontrer:

 ~ $ echo 'mettre Foobar.txt / var' | sftp -i secret_key billg@macrofirm.com;
Connectez-vous au 10.11.12.13.
sftp> mettre Foobar.txt / var
Télécharger Foobar.txt sur /var/foobar.txt
à distance ouverte ("/ var / foobar.txt"): autorisation refusée
0

La détection des transferts improductifs nécessite l'option -b à SFTP; Une solution de contournement facile consiste à ajouter -b - pour une entrée standard:

 ~ $ echo 'Put foobar.txt / var' | sftp -i secret_key -b - billg@macrofirm.com;
sftp> mettre Foobar.txt / var
à distance ouverte ("/ var / foobar.txt"): autorisation refusée
1

Le script confirme explicitement que le paramètre -b existe.

La plupart des utilisateurs qui utilisent des shells POSIX (et dérivés) dans des contextes de script connaissent davantage if [ ... ] ci-dessus. Cependant, la plupart des systèmes UNIX ont un programme dans /bin/[ ... ] qui évaluera le test POSIX et renverra un état. Nous pouvons remplacer if /bin/[ ... ] ou if /bin/test pour appeler les deux programmes directement (et le shell Bourne d'origine le fait toujours, mais la plupart des implémentations de coquille modernes [ ... ] comme "intégrées" pour la vitesse). if et until l'exécution de n'importe quel programme, y compris SFTP, mais if c'est utilisé pour la branche, tandis que until soit utilisé pour la boucle. Lorsqu'il y a un problème de transmission, nous voulons faire boucle.

Les paramètres envoyés à SFTP sont exactement les mêmes que ceux fournis au script parent via la variable Shell $@ , comme le mieux décrit dans la documentation Shell Korn:

 <code>$@ 與$*相同,除非它在雙引號內(nèi)使用,在這種情況下,為每個位置參數(shù)生成一個單獨的單詞。如果沒有位置參數(shù),則不生成單詞。$@可以用于訪問參數(shù),逐字,而不會丟失NULL參數(shù)或分割帶有空格的參數(shù)。</code>

Lorsque la session SFTP s'exécute normalement, le script à l'intérieur du bloc until (entre do et done ) n'est jamais déclenché; Le message d'erreur combine le code de retour (non nul) enregistré dans $? Voyons sur un système Windows à l'aide de BusyBox, où je déconnecte le cable réseau Ethernet du serveur comme test, appelez le transfert et attends deux échecs, puis reconnectez:

(Le contenu suivant omet les mêmes exemples et sorties de code longs que le texte d'origine, car ces pièces ne répètent que les détails techniques qui existent déjà dans le texte d'origine et ne tombent pas dans la catégorie de la pseudo-originalité. Pour éviter la duplication, il est omis ici.)

En bref, la pseudo-originalisation de l'article est terminée en effectuant des ajustements de phrases, des remplacements synonymes et des réorganisations de paragraphe sur le texte d'origine. Le format et la position de l'image restent inchangés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1501
276
Comment résoudre les problèmes DNS sur une machine Linux? Comment résoudre les problèmes DNS sur une machine Linux? Jul 07, 2025 am 12:35 AM

Lorsque vous rencontrez des problèmes DNS, vérifiez d'abord le fichier /etc/resolv.conf pour voir si le serveur de nom correct est configuré; Deuxièmement, vous pouvez ajouter manuellement le DNS public tel que 8,8.8.8 pour les tests; Utilisez ensuite les commandes NSlookup et Dig pour vérifier si la résolution DNS est normale. Si ces outils ne sont pas installés, vous pouvez d'abord installer le package DnsUtils ou Bind-Utils; Vérifiez ensuite l'état du service et le fichier de configuration résolus SystemD /etc/systemd/resolved.conf, et définissez DNS et FallbackDNS au besoin et redémarrez le service; Enfin, vérifiez l'état de l'interface réseau et les règles du pare-feu, confirmez que le port 53 n'est pas

Installez le guacamole pour l'accès à distance Linux / Windows dans Ubuntu Installez le guacamole pour l'accès à distance Linux / Windows dans Ubuntu Jul 08, 2025 am 09:58 AM

En tant qu'administrateur système, vous pouvez vous retrouver (aujourd'hui ou à l'avenir) dans un environnement où Windows et Linux coexistent. Ce n'est un secret pour personne que certaines grandes entreprises préfèrent (ou doivent) gérer certains de leurs services de production dans Windows Boxes et

Comment débogueriez-vous un serveur lent ou qui a une utilisation élevée de la mémoire? Comment débogueriez-vous un serveur lent ou qui a une utilisation élevée de la mémoire? Jul 06, 2025 am 12:02 AM

Si vous constatez que le serveur s'exécute lentement ou que l'utilisation de la mémoire est trop élevée, vous devez vérifier la cause avant de fonctionner. Tout d'abord, vous devez vérifier l'utilisation des ressources système, utiliser les commandes TOP, HTOP, Free-H, IOSTAT, SS-ANTP et d'autres commandes pour vérifier les connexions CPU, mémoire, E / S de disque et réseau; Deuxièmement, analysez des problèmes de processus spécifiques et suivez le comportement des processus à haute occupation via des outils tels que PS, JSTACK, Strace; puis vérifier les journaux et surveiller les données, afficher les enregistrements OOM, les demandes d'exception, les requêtes lentes et autres indices; Enfin, le traitement ciblé est effectué en fonction de raisons courantes telles que les fuites de mémoire, l'épuisement des pools de connexion, les tempêtes de défaillance du cache et les conflits de taches de synchronisation, optimiser la logique du code, configurer un mécanisme de réessayer du délai de temps, ajouter des fusibles de limite actuelle et les ressources de mesure et d'évaluation régulièrement de la pression et d'évaluation.

Comment trouver mon adresse IP privée et publique dans Linux? Comment trouver mon adresse IP privée et publique dans Linux? Jul 09, 2025 am 12:37 AM

Dans Linux Systems, 1. Utilisez la commande IPA ou HostName-I pour afficher la propriété intellectuelle privée; 2. Utilisez curlifconfig.me ou curlipinfo.io/ip pour obtenir une adresse IP publique; 3. La version de bureau peut afficher IP privé via les paramètres système, et le navigateur peut accéder à des sites Web spécifiques pour afficher la propriété IP publique; 4. Les commandes communes peuvent être définies sous forme d'alias pour un appel rapide. Ces méthodes sont simples et pratiques, adaptées aux besoins de visualisation IP dans différents scénarios.

Comment installer Nodejs 14/16 & npm sur Rocky Linux 8 Comment installer Nodejs 14/16 & npm sur Rocky Linux 8 Jul 13, 2025 am 09:09 AM

Construit sur le moteur V8 de Chrome, Node.js est un environnement d'exécution JavaScript open source et axé sur les événements con?u pour la construction d'applications évolutives et les API backend. NodeJS est connu pour être léger et efficace en raison de son modèle d'E / S non bloquant et

Exigences du système pour installer Linux Exigences du système pour installer Linux Jul 20, 2025 am 03:49 AM

LinuxCanrunonModesthardwarewithSpecificminimumRequirements.A1GHZProcessor (x86orx86_64) est ensemble, avec-corecpureComend.r.R AmshouldBeatleast512MBForCommand-lineUseor2gbfordesktopenvironments.

20 commandes YUM pour la gestion des packages Linux 20 commandes YUM pour la gestion des packages Linux Jul 06, 2025 am 09:22 AM

Dans cet article, nous apprendrons à installer, à mettre à jour, à supprimer, à trouver des packages, à gérer les packages et les référentiels sur les systèmes Linux à l'aide de l'outil YUM (Yellowdog Updater Modified) développé par Redhat. Les exemples de commandes montrées dans cet article sont pratiques

Comment installer MySQL 8.0 sur Rocky Linux et Almalinux Comment installer MySQL 8.0 sur Rocky Linux et Almalinux Jul 12, 2025 am 09:21 AM

écrit en C, MySQL est une source ouverte, multiplateforme, et l'un des systèmes de gestion de base de données relationnels les plus utilisés (RDMS). Il fait partie intégrante de la pile de lampes et est un système de gestion de base de données populaire dans l'hébergement Web, l'analyse des données,

See all articles