VSC: SFTP Config

ral9004

Lt. Junior Grade
Registriert
Dez. 2017
Beiträge
466
Hallo

In VSC habe ich die Extension SFTP (Natizyskunk - natan-fourie.fr) installiert.
Im JSON Config File habe ich das konfiguriert:

{
"name": "Nice Try",
"host": "access1.bofh.net",
"protocol": "sftp",
"port": 22,
"username": "bofh",
"remotePath": "/home/bofh/public_html",
"uploadOnSave": false,
"useTempFile": false,
"openSsh": false
}

Ich lade eine Datei, gehe über Shift-Ctrl-P ins Menu und wählte aus: "SFTP:Upload Active File"
Danach fragt er nach dem Pw, welches ich aus KeyPass direkt kopiere.

Resultat:
Die Datei ist nicht hochgeladen (Check mit Filezilla)
Im Log steht das:
[08-26 17:11:48] [bofh] local ➞ remote c:\Users\bofh\ownCloud - bofh@cloud.bofh.net\Projekte\MDWiki\Source\test.md

Ich editiere die Source Files in einem Verzeichnis das mit mit meiner OwnCloud synct. Der Pfad rechts referenziert auf das lokale Verzeichnis.

Wenn jemand eine Idee hat, woran es liegt teste ich es gerne.
Anderfalls gehe ich wie bisher über einen Batch und SCP (Schlüsselpaar) vor, wenn ich updaten will.

Beste Grüsse
 
Hallo nullPtr

Gute Idee. Habe ich gemäss Deinem Link umgesetzt.
Erhalte jedoch Fehler:
fehler.png


Verstehst Du weshalb?

Beste Grüsse
 
Ich glaube, die geschweifte Klammer in Zeile 10 muss runter vor die letzte eckige Klammer in Zeile 16. Und das Komma in Zeile 10 müsste dann wahrscheinlich hinter Zeile 9. Und Code bitte in Code-Tags posten. ;)
 
Hallo Daloop

Wie mein IT - Dozent zu sagen pflegte:
"Glauen ist etwas wunderbares - in der Kirche - sonst nirgendwo" ;-)

Der "Source Code" oben ist eine Grafik. Da wird der Code Tag keinen Effekt haben :-)

Hast Du den Link in der Antwort angeschaut?
Dort sieht das Beispiel so aus:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "Run tests",
"type": "shell",
"command": "./scripts/test.sh",
"windows": {
"command": ".\\scripts\\test.cmd"
},
"group": "test",
"presentation": {
"reveal": "always",
"panel": "new"
}
}
]
}

Ich hätte diesen Code gerne als Code formatiert. Hatte gerade nicht kehr Zeit als 20 Sekunden zum suchen. Das Essen steht bereits auf dem Tisch. Wenn ich Morgen heraus gefunden habe, wie man hier Code als Code formartiert mache ich es. Hand aufs Herz :-)

Beste Grüsse
 
Kein Ding. ;) Die Funktion zum Einfügen von Code findest Du, wenn Du auf die 3 Punkte im Editor klickst:
1693074337809.png


BTT:
Das Original auf der Webseite hatte ich mir schon angesehen. In Deinem Screenshot sieht man, dass Du die "Windows"-Property entfernt, aber deren letzte geschweifte Klammer übersehen hast. Die "Windows"-Property wird benötigt, falls Du unter Windows arbeitest. Dann sollte dort der Pfad zu Deinem Script rein.

JSON:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
            {
            "label": "Run tests",
            "type": "shell",
            "command": "./scripts/test.sh",
            "windows": {
                "command": ".\\scripts\\test.cmd"
            },
            "group": "test",
            "presentation": {
                "reveal": "always",
                "panel": "new"
            }
        }
    ]
}
 
Hallo Daloop

  • "Code" Formatierung gefunden - thx
  • Deine Erklärung verstanden. IMO:
Das Bsp ist für eine Linux und eine Win Inst ausgelegt: Bash =command mit .SH Skrpit. "windows ..." für die Win Installation von VSC

Als ich die Frage stellt, war ich am Notebook. Jetzt bin ich am Desktop PC. Beide VSC sind mit gleichen Account angemeldet. Dennoch hat die Json Datei nicht übernommen. D.h. zurück auf Start.

JSON:
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
                {
                "label": "bla bla",
                "type": "shell",
                "windows": {
                    "command":"C:\windows\tool\batch.cmd"
                },
                "group": "build",
                "presentation": {
                    "reveal": "always",
                    "panel": "new"
                }
            }
        ]
    }

Sieht besser aus. Nur einen Error:
"Invalid escape character in string."
Das ist die Zeile unterhalb windows:
Was dort nach "Command:" folge, egal mit Leerschlag oder nicht generiert diesen Error
Die verlinkte Ausgangsseite bietet keinen Hinweis auf die Referenz:
The task's properties have the following semantic:

  • label: The task's label used in the user interface.
  • type: The task's type. For a custom task, this can either be shell or process. If shell is specified, the command is interpreted as a shell command (for example: bash, cmd, or PowerShell). If process is specified, the command is interpreted as a process to execute.
  • command: The actual command to execute.
  • windows: Any Windows specific properties. Will be used instead of the default properties when the command is executed on the Windows operating system.
  • group: Defines to which group the task belongs. In the example, it belongs to the test group. Tasks
Dann habe ich noch eine weitere Seite mit 1001 Info ohne ein einfaches Beispiel gefunden
https://code.visualstudio.com/docs/editor/tasks

Die Suchmaschine bemüht:
"Visual Studio Code" "Custom task" site:.de = 0 Treffer

Dann sagt StackOverflow, dass für Batches "process" und nicht "shell" verwendet werden muss:

The shell commands can only run inside a shell such as DIR for cmd and if for bash. So when you want to run shell commands, you have to use "type": "shell" setting to run it correctly. When you want to just run a program such as .bat, .sh or .exe, then you can just use "type": "process" setting.
https://stackoverflow.com/questions...etween-process-and-shell-in-vscode-tasks-json

Die Fehlermeldung bleibt. Wird ergänzt mit "missing property command". Btw. sind die Beispiele auf dieser Website ohne das Property "Windows".

Andere Suche getestet:
""Visual Studio Code" "tasks.json" "CMD" OR "Batch"" = viel blabla - kein Tut oder Bsp.

Ein Blick auf die Uhr zeit, dass ich bald 19 Stunden auf den Beinen bin.
Zeit für mein Buch im Bett...

Beste Grüsse
 
Wenn Du eine Batch-Datei über den Task starten möchtest, dann ersetze bitte im "command"-Argument der "windows"- Property die einzelnen Backslashes im Dateipfad durch doppelte Backslashes. Unter Linux kannst Du den Dateipfad mit normalen Slashes in das "command"-Property schreiben.

JSON:
"command": "./scripts/test.sh", # Pfad zur Batchdatei unter Linux
"windows": {
    "command": ".\\scripts\\test.cmd" 
    # Pfad zur Batchdatei unter Windows (doppelte Backslashes)
},

Erklärung:
Durch das jeweils führende Backslash wird das folgende Backslash "escaped", damit der Interpreter versteht, dass es mit zum Dateipfad gehört und nicht als Regex-Steuerzeichen gelesen wird. Deshalb wird in Deinem Beispiel die Fehlermeldung "Invalid escape character in string" geworfen.

Alternativ kann dem Task natürlich auch gleich der SCP-Befehl mit entsprechenden Argumenten übergeben werden. Zum Beispiel folgendermaßen:

JSON:
"command": "scp /home/user/datei1 user@remote:/tmp", # unter Linux
"windows": {
    "command": "scp c:\\users\\user\\datei1 user@remote:/tmp" # unter Windows
},

Für SCP müsstest Du den Typ des Tasks auf "shell" stehen lassen können. Ist ja ein Shell-Befehl.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: ral9004
Hallo Daloop

Danke für die Erklärung.
RegEx und Escape Sequenz verstanden. Vielen Dank!

Deine Erklärung besagt, dass ich da ich mit Windows arbeite die Zeile "command" nicht benötige.
Nur "windows...". Das widerspricht der im letzten Post genannten Fehlermeldung.

In zirka 90 Min kann ich Feedback geben, ob das bei mir funktioniert

Nochmals vielen Dank für Deine geduldige und sprachlich überdurchschnittlich präzise Anleitung.

Beste Grüsse
 
  • Gefällt mir
Reaktionen: Daloop
Hallo

Die SFTP Extension habe ich deinstalliert

Pfadangabe in Windows
Dieser Ausschnitt zeigt im Output Fenster keinen Fehler
{
"label": "Scp 2 Trash.net",
"type": "shell",
"windows": {
"command": "c://windows//tool//scp-trash.cmd"
},

Befehl direkt in Tasks.json ausführen
Danke für den Hinweis. Wie ich in Beispielen gesehen habe, kann man auch shell interne Befehle wie DIR / COPY etc. so ausführen.
Einerseits würde ein scp -r quelle target tatsächlich diese Aufgabe lösen. Andererseits, wenn ich mich schon damit auseinandersetzen muss, dann will ich auch eine Batchdatei nutzen können. Das werde ich sicher irgendwann einsetzen müssen.

Starten
Über "Run Task" ausgeführt. Erste Sichtung sieht gut aus. Teste nun ausführlicher.

Herzlichen Dank das Du mich auf den Gipfel geschoben, gezogen und getragen hast 😂😉

Nehme mir gerade ein paar Minuten Zeit, um mich tiefer in das Thema einzudenken.
Ich lese gerade Kapitel 8 ("Automating Tasks") des Buches "Visual Studio Code Distilled_ Evolved Code Editing for Windows, macOS, and Linux" von "Alessandro Del Sole".

Beste Grüsse und schönen Sonntag
 
  • Gefällt mir
Reaktionen: Daloop
Zurück
Oben