Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

Comment exécuter la commande SQL dans le script Bash et enregistrer la sortie de cette commande dans la variable

Je veux investir des composants Oracle Dans le script Bash, qui effectuera un ensemble d'objectifs:

Connectez-vous au serveur distant /Où est le mien Oracle DB/ comme root.

Effectuer "su - oracle".

Entre mercredi sqlplus En tant qu'utilisateur spécifique Oracle.

Effectue la commande SQL select Et enregistre la sortie de cette commande dans la variable.

Affiche le résultat de cette variable dans Bash shell.

J'ai consulté ici quelques exemples sur stackoverflow, Dont beaucoup semblent aller à l'exécution de la commande, mais ne décrivent pas nécessairement en détail comment afficher la sortie de l'utilisateur /Bien que j'étudie encore quelques autres/. Par exemple, en supposant que tous les échanges de touches sont configurés à l'avance, il serait possible d'utiliser la méthode suivante:


[code]#!/bin/sh
ssh -q root@5.6.7.8
sqlplus ABC/XYZ@core <<endofsql "${datasource_name}"[="" "select="" "something"="" "su="" 'sqlplus="" -="" -------------------="" -1`[="" -2="" -c="" -q="" -s="" .="" ...="" 07-06-2009="" 10.2.0.4.0-64bit="" 10g="" 12:35:06="" 18:04:48[="" 1982,="" 2002,="" 2012="" 29="" 5.6.7.8="" 9.2.0.4.0="" ;="" ;"="" [code]#!="" [code]create_date="" [code]echo="" [code]no="" [code]ssh="" a="" abc="" access="" accès="" agréable="" ainsi,="" alors="" analyse="" applications="" au="" au-dessus="" aucun="" avec="" avertissement="" avertissement:="" avertissements.="" bad="" bash:="" bien,="" bin="" c="" causé="" ce="" cela="" cela,="" cependant,="" cet="" cette="" chose="" ci-dessus.="" clusters="" code]="" commande="" comment="" comprends="" configurer:="" connecté="" control="" contrôle="" conçu="" copyright="" corporation.="" create_date="" d'application="" dans="" database="" datasource_name="" datasource_name,="" de="" des="" descripteur="" descriptor="" deux="" devrait="" distante="" données="" droits="" du="" démarré="" edition="" en="" endofsql[="" enregistre="" enterprise="" entrer="" entrée="" essaye="" essayé="" est="" et="" exit;="" faire="" fais="" faites:="" fenêtre="" fichier="" file="" fonction="" fonctionne="" from="" head="" idéalement,="" ignorer="" ignoré.="" in="" indiquent="" intelligentes="" j'ai="" je="" job="" juste="" l'un="" la="" lance="" le="" les="" lieu="" ligne="" lignes="" lorsque="" machine="" maintenant="" maintenant,="" mais="" mardi="" mauvais="" mercredi="" mon="" msisdn="12345678912" même="" n'est="" no="" numéro="" olap,="" opportunités="" oracle="" oracle"="" ou="" où="" paramètres="" partitionnement,="" pas="" peut="" plupart="" plus="" points="" pour="" prepaid_subscriber="" problème,="" problème:="" production="" qu'il="" quand="" que="" question="" qui="" release="" remarqué="" reçois="" reçois...="" root@5.6.7.8="" rows="" réellement="" réelles="" réels,="" réservés.="" s'il="" sans="" savoir="" script="" select="" selected[="" semble="" sh="" shell,="" shell.="" shell.[="" si="" simplement="" simplifier="" sont="" sortie="" sources="" spécifique="" sql="" sql*plus:="" sqlplus="" sqlplus-s="" ssh="" ssh-q="" su="" succès="" suit,="" sur="" tableau:="" tail="" test="" this="" thus="" to="" tous="" tout="" travail="" tty="" tty,="" une="" utilisé="" valeurs:="" variable="" vente="" veux.="" vides="" voici="" warning:="" where="" xyz@core'"="" xyz@core'"[="" y="" |="" à="" à:="" éliminer="" équipe="" équipes="" être="">

Si je comprends pourquoi le problème décrit ci-dessus peut se produire, je peux peut-être comprendre comment faire fonctionner mon script correctement. Toute suggestion sera très reconnaissante! Remercier.
</endofsql>
Invité:

Clement

Confirmation de:

Changez la première chaîne à:


ssh -t root@5.6.7.8 "su - oracle"


Obtenir tty, Pour voir si cela fonctionne pour vous.

Une autre chose que vous pouvez faire dans votre script est - Ceci est envahi stderr Sur votre variable, si vous voulez le voir également dans votre variable, ce qui, apparemment, ne vous concerne pas, même si dans certains cas, je l'ai fait dans le passé. Voici un exemple dans les commentaires ci-dessous.

Christian

Confirmation de:

Ceci est un exemple de script pour MySQL, Mais cela peut être facilement édité pour Oracle :


[code]#!/bin/bash

remote=oracle@5.6.7.8

ssh -q -t $remote <<eof <<endofsql="" <<eofbash="" bash="" mysql="">/tmp/out
show databases;
ENDOFSQL
EOFBASH
EOF

scp $remote:/tmp/out /tmp/out
ds=$/
</eof>

Pour répondre aux questions, connectez-vous ou registre