Kick ShellScript sur le serveur depuis Java

Préface

J'ai obtenu un vidage de la table en donnant un coup de pied à ShellScript sur le serveur avec une fonction supplémentaire Je ne l'ai jamais fait en Java, alors je vais l'écrire J'ai utilisé cette personne comme référence Ici, exécutez le ShellScript de RenumberData.sh dans / home / dev / sample / work / sh /

Environnement d'exécution

java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

appel

yobidashi.java


CallProcess sh = new CallProcess();
sh.doBackupTable("RenumberData");

CallProcess

CallProcess.java


package mr.yappy;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import sample.core.log.Logger;

/**
 *Classe de traitement d'exécution de script Shell
 * @param shName Nom du shell d'exécution
 * @author yappy
 * @version 1.0.0
 */
public class CallProcess {

    private Logger log = Logger.getLogger("aaa");

    public void doBackupTable(String shName) {
        Process process = null;
        InputStream inputS = null;
        InputStreamReader isReader = null;
        BufferedReader bReader = null;
        String text = "";

        try {
            //Spécifiez le chemin sur le serveur
            String shPath = "/home/dev/sample/work/sh/";
            ProcessBuilder pb = new ProcessBuilder("sh", shPath + shName + ".sh");
            // /home/dev/sample/work/sh/RenumberData.courir sh
            process = pb.start();

            //inputS = process.getInputStream();
            inputS = process.getErrorStream();
            //isr = new InputStreamReader(inputS, "Shift-JIS");
            isReader = new InputStreamReader(inputS, "UTF-8");
            bReader = new BufferedReader(isReader);

            StringBuilder builder = new StringBuilder();
            String c = "";

            while ((c = bReader.readLine()) != null) {
                //Écriture des résultats d'exécution
                builder.append(c);
            }
            //Résultat d'exécution
            text = builder.toString();
            //Fin
            process.waitFor();
            //Obtenir l'état du traitement
            int ret = process.exitValue();
            if (ret == 0) {
                //Réussite
            } else {
                //Terminaison anormale
                log.error("error result : " + text);
            }

        } catch (IOException | InterruptedException e) {
            log.error(e,e);
        } finally {
            //Divers ferme
            if (process != null) {
                process.destroy();
            }
            if (inputS != null) {
                try {
                    inputS.close();
                } catch (IOException e) {
                    log.error(e,e);
                }
            }
            if (isReader != null) {
                try {
                    isReader.close();
                } catch (IOException e) {
                    log.error(e,e);
                }
            }
            if (bReader != null) {
                try {
                    bReader.close();
                } catch (IOException e) {
                    log.error(e,e);
                }
            }
        }
    }
}

Recommended Posts

Kick ShellScript sur le serveur depuis Java
[Java] Comment récupérer les paramètres passés du html côté serveur
Vérifiez le jeton d'ID obtenu de Firebase côté serveur (Java + SpringBoot)
Utilisation de la base de données (SQL Server 2014) à partir d'un programme Java 04/01/2018
JSON en Java et Jackson Partie 1 Renvoyer JSON à partir du serveur
Considération sur le framework de persistance Java 2017 (1)
La route de JavaScript à Java
Installez le plugin memcached sur MySQL et accédez à partir de Java
Mes réflexions sur la méthode d'égalité (Java)
Appeler java depuis C ++ sur Android NDK
Installez OpenJDK (Java) sur le dernier Ubuntu
Accédez à l'API REST Salesforce depuis Java
Retour sur les bases de Java
Obtenir l'historique du serveur Zabbix en Java
Exécutez le code Java stocké dans le presse-papiers.
Création d'applications Web Java sur Windows Server 2016
Créer un serveur d'applications Web (Java) sur VPS
Utilisation de JUnit à partir de la ligne de commande sur Ubuntu
Placez le projet Java à l'aide de la base de données sur le serveur créé dans VPS jusqu'à présent
[Java] Réglez l'heure depuis le navigateur avec jsoup
Migrer de Java vers Kotlin côté serveur + Spring-boot
Essayez d'appeler le service CORBA depuis Spring (Java)
Connexion SSH au serveur d'applications avec heroku
Essayez d'accéder à l'ensemble de données depuis Java en utilisant JZOS
Compilez et exécutez Java sur la ligne de commande
Pour les ingénieurs Java qui démarrent Kotlin à partir de maintenant
Essayez la communication en utilisant gRPC sur un serveur Android + Java
Développement de serveur Minecraft BE de PHP à Java
[Java] Mémo sur la façon d'écrire la source
[Développement Android] Obtenez des images du serveur avec Java et définissez-les dans ImageView! !!
[Java] Je souhaite calculer la différence par rapport à la date
Comment écrire Scala du point de vue de Java
[Java] Comment extraire le nom du fichier du chemin
Pour se connecter de Spring à MySQL sur un serveur virtuel (non résolu)
Déployer des applications Java sur le service IBM Cloud Kubernetes
Langage Java du point de vue de Kotlin et C #
Installez le dernier pilote matériel d'ELRepo sur CentOS
Appelons IBM Watson Assistant 2018-07-10 à partir du SDK Java.
J'ai essayé d'utiliser Log4j2 sur un serveur Java EE
Connexion HTTPS avec Java au serveur de certificats auto-signé
[Android] Téléchargement d'images du terminal vers le serveur
Notes sur la mise à jour d'Ubuntu à partir de la ligne de commande (16.04 → 18.04, 18.04 → 20.04 les deux)
(Ruby on Rails6) Refléter le contenu publié à partir du formulaire
Nouveaux sujets de l'examen Java SE 11 Programmer II
Verrou pessimiste sur NW ABAP depuis Java via JCo
Appeler Java depuis JRuby
Changements de Java 8 à Java 11
Somme de Java_1 à 100
Évaluer la source Java à partir de Java
Exécutez PostgreSQL sur Java
Accédez à API.AI depuis Java
De Java à Ruby !!
JPS (pages Java Server)
La clé pour exécuter Docker sur Raspberry Pi 4 (serveur Ubuntu 20.04)
[JDBC] J'ai essayé d'accéder à la base de données SQLite3 depuis Java.
20190803_Java & k8s sur Azure L'histoire d'aller au festival
Découvrez les nouvelles fonctionnalités de Java 7 à Java 9 à la fois
Apache Geode-Easy moyen d'exécuter la logique côté serveur