2017-07-03 1 views
0

J'ai une commande qui sort certaines données que je stocke dans un fichier ext en utilisant un '>>' commande. Maintenant, au lieu de le faire Je veux avoir une socket ou un port sur n'importe quel serveur qui attrapera la sortie de la commande. En principe, je veux sortir toutes mes données de script sur un socket ou une URL qui est jamais possible.Sortie d'une commande linux à un url/port ou scocket au lieu de l'écrire dans un fichier

Toute aide dans ce sens est la bienvenue.

+0

Vous pouvez l'enregistrer dans un fichier, mais créer un script qui enverra des données à un serveur par "curl" et fera pivoter le fichier. – metamorphling

Répondre

2

Vous pouvez utiliser socat à l'écoute sur un 12345 du port et de l'écho des données qui lui sont envoyées comme ceci:

socat -u TCP-LISTEN:12345,keepalive,reuseaddr,fork STDOUT 

Si vous voulez capturer dans un fichier aussi bien (file.log), vous pouvez utiliser la même commande avec T:

socat -u TCP-LISTEN:12345,keepalive,reuseaddr,fork STDOUT | tee file.log 

Vous pouvez exécuter votre programme pour la sortie de périphérique virtuel TCP bash:

./prog > /dev/tcp/localhost/12345 

Si vous ne voulez pas utiliser la magie bash vous pouvez également utiliser socat pour envoyer les données:

./prog | socat - TCP-CONNECT:localhost:12345 

L'exemple ci-dessus supposent que vous exécutez votre programme et « enregistreur » sur le même système, mais vous pouvez remplacer "localhost" avec le nom d'hôte ou l'adresse du système que vous souhaitez envoyer (où le socat écoute).

+0

Je suis upvoting celui-ci parce qu'il fonctionne parfaitement comme requis aussi celui-ci est assez simple. – jision