C++ und Shell Skript



  • Hallo,

    ist es möglich in C++ ein Shell Skript zu erzeugen, das dann Daten speichern soll?



  • Ja.


  • Mod

    Du drückst dich bestimmt dumm aus. Momentan fragst du nach dieser Antwort:

    #include <fstream>
    int main()
    {
     ofstream file("script.sh");
     file << "echo Daten > Datendatei\n";
    }
    

    Was willst du wirklich?



  • Ich möchte in einem C++ Programm ein Skript erzeugen mit dem ich dann E-Mails versenden kann. Desweiteren muss dieses Skript ein paar Strings abspeichern auf die dann zu einem späteren Zeitpunkt zugegriffen werden soll.Das Skript soll sich am Ende des gesamten Prozesses löschen und wenn das nicht geht nur den Inhalt löschen.


  • Mod

    drone schrieb:

    Ich möchte in einem C++ Programm ein Skript erzeugen

    Dann hast du deine Antwort. Aber ich bin mir ziemlich sicher, dass du nicht ausdrücken kannst, was du wirklich willst. Warum sollte man mit einem Programm ein bestimmtes Script zu einem speziellen Zweck erstellen wollen?



  • was ich wirklich will ist einen Schlüssel abspeichern so das man später darauf zugreifen kann. Zudem darf das File indem der key steht nicht an einem Auffälligen Ort abgespeichert werden.



  • drone schrieb:

    Zudem darf das File indem der key steht nicht an einem Auffälligen Ort abgespeichert werden.

    Dir ist aber schon klar, dass man mit strace exakt sehen kann, welche Dateien ein Programm schreibt oder liest? Mit einem unnötig komplizierten Pfad machst du also nur dir das Leben schwer.



  • hast du denn eine bessere Idee?



  • drone schrieb:

    hast du denn eine bessere Idee?

    Ich würde den Key einfach an einem naheliegenden Ort speichern, zum Beispiel im Home-Verzeichnis des Users in einem Ordner, dessen Name mit einem Punkt beginnt. Der User darf den Key doch sowieso haben, ist schließlich seiner. Unter Linux etwas vor dem User zu verstecken, vor allem aber etwas vor root zu verstecken, geht garantiert schief.

    Wenn es wichtig ist, dass nur der User den key lesen darf, kannst du in deinem Programm die Zugriffsrechte des Keys prüfen. Wenn die noch anderen Usern den Zugriff erlauben, akzeptiert dein Programm den Key nicht. Das macht zum Beispiel ssh. Das akzeptiert keine private keys, auf die andere User Zugriff haben.

    Du hast aber immer noch nicht beschrieben, *was* du machen möchtest. Du hast nur beschrieben, *wie* du es machen möchtest. Die Antworten hier wären sicherlich besser, wenn du beschreiben würdest, was du machen möchtest, und nicht wie.



  • Warum machst du nicht gleich alles im C++-Programm?
    Ich habe mal gehört, man kann auch mit C++ EMails verschicken und Daten speichern.
    Und an den Quellcode eines übersetzten C++-Programms kommt kaum jemand wirklich heran und darum geht es dir ja wohl.



  • Wenn man einen Textfile im Programm erzeugt, ohne jetzt einen Pfad anzugeben, sondern zum Beispiel so

    include <fstream>
    int main()
    {
     ofstream file("file.txt");
    
    }
    

    wo speichert dass Programm die Txt-Datei ab? Zu bedenken sei noch, dass die Datei mehrmals benutzt werden muss.Oder anders ausgedrückt,dass Programm wird mit Textfile kompiliert, kann ich auf das Textfile dann noch zugreifen und ist es für den Benutzer dann sichtbar?



  • drone schrieb:

    wo speichert dass Programm die Txt-Datei ab?

    Im aktuellen Arbeitsverzeichnis.

    Zu bedenken sei noch, dass die Datei mehrmals benutzt werden muss.Oder anders ausgedrückt,dass Programm wird mit Textfile kompiliert, kann ich auf das Textfile dann noch zugreifen und ist es für den Benutzer dann sichtbar?

    Wie bitte? Was meinst du mit "Programm wird mit Textfile kompiliert"?



  • naja, wenn ich in Netbeans ein Programm schreibe, dann hab ich ja mein Projektverzeichnis. Dort ist dann auch das Textfile, wenn ich keinen anderen Pfad mit angegeben habe. Was passiert mit dem Textfile beim kompilieren?

    nman schrieb:

    Im aktuellen Arbeitsverzeichnis.

    . Ja, aber was ist wenn ich das Programm auf einem anderen Rechner laufen lassen möchte, in welchem Verzeichnis befindet sich dann das Textfile? Um es noch ausführlicher zu schildern: In Netbeans wird programmiert, eine Software wird erstellt. Diese Software wird jetzt auf einem anderen Rechner zum Laufen gebracht. Wo ist das Textfile dann?



  • drone schrieb:

    naja, wenn ich in Netbeans ein Programm schreibe, dann hab ich ja mein Projektverzeichnis. Dort ist dann auch das Textfile, wenn ich keinen anderen Pfad mit angegeben habe.

    Weil Netbeans wohl dein Arbeitsverzeichnis auf das Projektverzeichnis setzt. Ansonsten kannst du das Arbeitsverzeichnis in der Shell leicht mit "pwd" ermitteln bzw. mit "cd" ändern.

    Was passiert mit dem Textfile beim kompilieren?

    Gar nichts? Der Compiler interessiert sich für das Textfile überhaupt nicht, das wird ja erst zur Laufzeit deines Programms geschrieben.

    Ja, aber was ist wenn ich das Programm auf einem anderen Rechner laufen lassen möchte, in welchem Verzeichnis befindet sich dann das Textfile?

    Im Arbeitsverzeichnis. Welches Verzeichnis das Arbeitsverzeichnis ist, wird primär davon abhängen, wo und wie du das Programm auf der anderen Maschine startest.

    Um es noch ausführlicher zu schildern: In Netbeans wird programmiert, eine Software wird erstellt. Diese Software wird jetzt auf einem anderen Rechner zum Laufen gebracht. Wo ist das Textfile dann?

    Kann man so nicht beantworten.

    Wenn ich dein Tool so starte, dann liegt es in /tmp:

    cd /tmp && ~/pfad/zu/deinem/programm
    

    Wenn ich es so starte, liegt es in /foo/bar/baz:

    cd /foo/bar/baz && ~/pfad/zu/deinem/programm
    

    Dir fehlen offensichtlich Grundlagen und ich verstehe auch nicht ganz, was dein Ziel ist. Sieht alles ziemlich blind zusammenkopiert aus.



  • Sei mir bitte nicht bös, nman, aber Sinn und Zweck hat das ganze schon, glaub mir 😉 Und vielen Dank für deine Antwort!



  • drone schrieb:

    Sei mir bitte nicht bös, nman, aber Sinn und Zweck hat das ganze schon, glaub mir 😉

    Nur hast du offenbar wenig Ahnung davon was du tust. Sieht nach einem extrem dilettantischen Spammailer oä. aus. Bei deinem Kenntnisstand wäre es sinnvoller, sich mal mit den Grundlagen auseinanderzusetzen statt auf Biegen und Brechen irgendwas halb funktionstüchtiges zusammenschustern zu wollen.



  • drone schrieb:

    Sei mir bitte nicht bös, nman, aber Sinn und Zweck hat das ganze schon, glaub mir

    Du würdest sicherlich bessere Antworten bekommen, wenn du den Sinn und Zweck einfach beschreiben würdest statt drumherumzureden.



  • merk ich mir fürs nächste mal 🙂


Anmelden zum Antworten