2017-09-29 1 views
0

Ich versuche, den folgenden Groovy-Skripte ausführen, die Dateiberechtigungen auf 777 auf einem Linux-Server zu ändern beabsichtigt -Anschluss mit Linux-Server SFTP Groovy

@GrabConfig(systemClassLoader = true) 
@Grab(group="com.jcraft", module="jsch", version="0.1.46") 
import com.jcraft.jsch.*; 
import com.jcraft.jsch.Channel; 
import com.jcraft.jsch.ChannelSftp; 
import com.jcraft.jsch.ChannelSession; 
import java.io.InputStream; 
import java.io.File; 
import java.nio.file.Files; 
import java.nio.file.Paths; 
import java.util.Vector;  
java.util.Properties config = new java.util.Properties() 

config.put "StrictHostKeyChecking", "no" 
JSch ssh = new JSch(); 
Session session = null; 
Session sess = ssh.getSession ("USERNAME", "HOST", 22); 
sess.with { 
setConfig config 
setPassword ("PASSWORD"); 
connect() 
Channel chan = openChannel ("sftp"); 
chan.connect() 
ChannelSftp sftp = (ChannelSftp) chan; 

"chmod 777".execute(null, new File("WORKING DIRECTORY\Test_ftpuser_place.txt")) 

chan.disconnect() 
disconnect() 
} 

Außerdem habe ich versucht, mit dem folgenden Befehl anstelle von Chmod, aber es hat trotzdem nicht funktioniert.

builder = new AntBuilder() 
builder.chmod(dir:"WORKING DIRECTORY", perm:'+rwxrwxrwx', includes:'Test_ftpuser.txt') 

Und im diesen Fehler auf den früheren Teil des Skripts ausgeführt -

java.io.IOException: Cannot run program "chmod": CreateProcess error=2, The system cannot find the file specified 

    at java_lang_Runtime$exec$0.call(Unknown Source) 

    at ConsoleScript45$_run_closure1.doCall(ConsoleScript45:45) 

    at ConsoleScript45.run(ConsoleScript45:18) 

Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified 

    ... 3 more 

Könnte mir jemand bitte helfen mit diesem heraus.

Vielen Dank!

Antwort

0

Sehen Sie diese Zeile:

"chmod 777" .execute (null, neue Datei ("Verzeichnis \ Test_ftpuser_place.txt"))

Der zweite Parameter in der "Ausführen" method repräsentiert das aktuelle Arbeitsverzeichnis (siehe Dokumentation here). Sie verwenden es, um die Datei darzustellen, die Sie ändern möchten, was meiner Meinung nach nicht beabsichtigt ist.

Versuchen Sie zunächst, die Datei zu erstellen und dann ihre Berechtigungen zu ändern. Sie können auch methods on the File object verwenden, um diese festzulegen, ohne "process" verwenden zu müssen. .execute():

def myFile = new File("path/to/file") 
myFile.write("Hello World") 
myFile.setReadable(true, false) 
myFile.setWritable(true, false) 
myFile.setExecutable(true, false)