The CreatorCon Call for Content is officially open! Get started here.

How to write code in servicenow to connect the ftp server through midserver using JavascriptProbe

pavankumarreddy
Kilo Contributor

heeeeI want to import the file to FTP Server through mid server

I have used File builder ftp API and i am able to send the file to Mid server. From Mid server i need to pick the file and send it to ftp server.

1. I have written code to connect the FTP server   as below , but i am getting the error. Please help me on this.

ExtractFileFTP   --- Mid server Script include.

jspr.setJavascript("var req = new ExtractFileFTP();req.processFTPFileTransfer();");

  jspr.addParameter("MID_SERVER_PATH", "Path of the midserver");

  //jspr.addParameter("MID_SERVER_FILE_NAME", "csv file name ");

  jspr.addParameter("MID_SERVER_FILE_NAME", midserverfileName);

  jspr.addParameter("Target_SERVER_NAME", " ftp server name");

  jspr.addParameter("TARGET_SERVER_USER_NAME", "user name for ftp");

  jspr.addParameter("TARGET_SERVER_PASSWORD", "password of the ftp t connect");

  jspr.create();

Script present in   Midserver script include

initialize: function() {

  this.log("Checking the intial log ");

  this.ftpClient                     = Packages.com.org.apache.commons.net.ftp.FTPClient;

  this.MID_SERVER_PATH             = probe.getParameter("MID_SERVER_PATH");

  this.MID_SERVER_FILE_NAME   = parseInt(probe.getParameter("MID_SERVER_FILE_NAME"));

  this.Target_SERVER_NAME       = probe.getParameter("Target_SERVER_NAME");

  this.TARGET_SERVER_USER_NAME = parseInt(probe.getParameter("TARGET_SERVER_USER_NAME"));

  this.TARGET_SERVER_PASSWORD   = probe.getParameter("TARGET_SERVER_PASSWORD");

  }

processFTPFileTransfer : function(){

pk = new Packages.com.sshtools.j2ssh.authentication.PublicKeyAuthenticationClient();

pk.setUsername(this.TARGET_SERVER_USER_NAME);

pk.setPassword(this.TARGET_SERVER_PASSWORD);

var ssh = new Packages.com.sshtools.j2ssh.SshClient();

var ignoreHost = new Packages.com.sshtools.j2ssh.transport.IgnoreHostKeyVerification();

ssh.connect(this.Target_SERVER_NAME,ignoreHost);

authState = new Packages.com.sshtools.j2ssh.authentication.AuthenticationProtocolState();

if(ssh.authenticate(pk)==authState.COMPLETE){

  var sftp = ssh.openSftpClient();

  sftp.lcd(this.MIDSERVER_FILE_PATH);

  sftp.cd(this.Target_SERVER_NAME);

  sftp.put(this.MIDSERVER_FILE_NAME); // }

  file = new Packages.java.io.File(this.MIDSERVER_FILE_PATH+this.MIDSERVER_FILE_NAME);

  // Destination directory

  dir = new Packages.java.io.File(this.MIDSERVER_FILE_PATH);

  // Move file to new directory

  success = file.renameTo(new Packages.java.io.File(dir, file.getName()));

  }

}

while running the above script i am getting BELOW ERROR : Help me how to overcome this issue.

<output>Evaluation error: Caused by error in JavaScript probe 'ExtractFileFTP' at line 1

==&gt;     1: var req = new ExtractFileFTP();req.processFTPFileTransfer();

java.net.DualStackPlainSocketImpl.connect0(Native Method)

java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)

java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)

java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)

java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)

java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)

java.net.Socket.connect(Socket.java:589)

java.net.Socket.connect(Socket.java:538)

java.net.Socket.&lt;init&gt;(Socket.java:434)

java.net.Socket.&lt;init&gt;(Socket.java:211)

com.sshtools.j2ssh.net.SocketTransportProvider.&lt;init&gt;(SocketTransportProvider.java:51)

com.sshtools.j2ssh.net.TransportProviderFactory.connectTransportProvider(TransportProviderFactory.java:79)

com.sshtools.j2ssh.SshClient.connect(SshClient.java:776)

com.sshtools.j2ssh.SshClient.connect(SshClient.java:664)

com.sshtools.j2ssh.SshClient.connect(SshClient.java:587)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

java.lang.reflect.Method.invoke(Method.java:497)

org.mozilla.javascript.MemberBox.invoke(MemberBox.java:138)

org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:292)

org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:2577)

org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:42)

org.mozilla.javascript.gen.script_include_ExtractFileFTP_27._c_anonymous_2(script_include:ExtractFileFTP:32)

org.mozilla.javascript.gen.script_include_ExtractFileFTP_27.call(script_include:ExtractFileFTP)

org.mozilla.javascript.ScriptRuntime.doCall2(ScriptRuntime.java:2645)

org.mozilla.javascript.ScriptRuntime.doCall(ScriptRuntime.java:2582)

org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:85)

org.mozilla.javascript.gen.probe_ExtractFileFTP_5._c_script_0(probe:ExtractFileFTP:1)

org.mozilla.javascript.gen.probe_ExtractFileFTP_5.call(probe:ExtractFileFTP)

org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:560)

org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3439)

org.mozilla.javascript.gen.probe_ExtractFileFTP_5.call(probe:ExtractFileFTP)

org.mozilla.javascript.gen.probe_ExtractFileFTP_5.exec(probe:ExtractFileFTP)

com.service_now.mid.script.MIDScript.executeCompiledScript(MIDScript.java:193)

com.service_now.mid.script.MIDScript.evaluate(MIDScript.java:109)

com.service_now.mid.probe.JavascriptProbe.probe(JavascriptProbe.java:46)

com.service_now.mid.probe.AProbe.process(AProbe.java:91)

com.service_now.mid.queue_worker.AWorker.runWorker(AWorker.java:119)

com.service_now.mid.queue_worker.AWorkerThread.run(AWorkerThread.java:20)

java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

java.lang.Thread.run(Thread.java:745)</output>

2 REPLIES 2

johnhughes1
Mega Contributor

Can you tell me what you did to resolve this?   I have the same issue.


jamesmcwhinney
Giga Guru

Did you ever find a way to get ServiceNow to retrieve a file from an external FTP server?

We have a similar requirement.