Automated way of sending a file to FTP without cmd - scripting

I have a scheduled task using Windows 7 to run a .exe file at a specific hour, which in-turn creates a .txt file and saves it in a folder. I am trying to write a script that will automatically send this .txt file to a FTP server without me using cmd.
I am working with this script thus far
open ftp.site.com
username
password
put c:\folder\file.txt
quit

FTP doesn't require CMD. It can run in it's own console window.
FTP /? shows
-s:filename Specifies a text file containing FTP commands; the
commands will automatically run after FTP starts.
The script file contains exactly what you would type interactivly.

Supposing your current scheduled task runs a command like:
c:\folder\someapp.exe c:\folder\file.txt
Change that to
c:\folder\script.bat
Where the c:\folder\script.bat batch file will look like:
c:\folder\someapp.exe c:\folder\file.txt
ftp.exe -s:c:\folder\ftp.txt
And the c:\folder\ftp.txt will contains your FTP script:
open ftp.site.com
username
password
put c:\folder\file.txt
quit

Related

Upload file through vba and WinSCP.com

I don't know what is happeining since it's just flashing by the screen. But I have this code in vba.
Shell "H:\Dokument\Avvikelser\WinSCP.com /script=H:\Dokument\Avvikelser\script.txt"
In script.txt i have:
open ftpes://USERNAME:PASSWORD#ftp.SERVER.nu
put H:\Dokument\Avvikelser\lista.txt /Avvikelser/lista.txt
close
As I have understood it I need ftpes to make it passive?
I can't even start WinSCP from cmd prompt
I need to use a cmd style solution as I can't install software on the computer.
The file is not uploaded when the script ends.
WinSCP.COM is only an console interface program for WinSCP.EXE, you need to have both in the same directory.
See https://winscp.net/eng/docs/executables

Executing command in Plink from a batch file

I want to automate the export process which I take using expdp command in Oracle.
Following is the contents of batch file I have created to open PuTTY.
#echo off
"C:\Program Files\PuTTY\plink.exe" username#Ip_Addr -pw password -m Open_Putty.txt`
Following is the contents of Open_Putty.txt to execute different commands.
echo $ORACLE_SID;
Read oraenv;
But after opening Open_Putty.bat it disappears without showing any output.
Please help me with this. I want to set oraenv and run some more commands to take the backup.
It's unlikely that plink.exe disappears without showing any output. I assume you execute the batch file from a Windows Explorer or other GUI application, so the Plink console window disappears once Plink finishes (possibly with error) and you cannot read the output (error).
Make sure you execute plink.exe from a console window (typically a cmd.exe) or add pause command to the end of the batch.
Make sure Plink can find the script file (Open_Putty.txt). As you do not specify a path to the file, it has to be located in your current working directory. Safer is to use a full path to the script file:
"C:\Program Files\PuTTY\plink.exe" username#Ip_Addr -pw password -m "C:\path\Open_Putty.txt"
The backtick symbol at the end of the command should probably not be there.
The name "Open PuTTY" is bit confusing. You are not using PuTTY at all. And even if you refer to Plink by "PuTTY", your script file (Open_Putty.txt) is not opening PuTTY nor Plink. It's executing remote commands. So you should better name it export.txt or similar.

Call external batch in WinSCP to capture console output

I have a WinSCP code written for some file transfer ... That's working fine.
My requirement is: before I exit from WinSCP console, I want to execute another batch to take a screenshot of that WinSCP console and then I want to say bye to the WinSCP console. But as long as the second operation is not complete, I don't want to exit the WinSCP console.
I tried:
winscp> Call %some_path%\test.bat
but it says some error like:
The call command executes the command on the server.
You cannot execute local commands from WinSCP script.
But you can execute WinSCP from a batch file and take a screenshot from the batch after WinSCP finishes. Make sure that you execute the winscp.com (not the winscp.exe). The winscp.com is a console application. It inherits the console of the parent batch, so you do not loose WinSCP output after it finishes.
winscp.com /script.txt
%some_path%\test.bat
Anyway, I do not really understand the purpose of this. Wouldn't it be better, if you redirect the output of the winscp.com to a log file?
winscp.com /script=script.txt > output.txt
Or maybe even better, use a log file (the /log=<path> command line parameter). The log includes whole output of the WinSCP console, and lot more.

ssh scripting and copying files

I am writing a BASH deployment script on RH 5. Script runs great and send out an email at the end of the script run. However, what I need to do is, at the end of the script, if I detect any failure, I need to copy log files back local server to attach to the email.
Script can detect failure fine, how to copy log files back. I don't want to just cat the log files as they can be huge.
Any suggestions?
Thanks
S
If I understand correctly your problem, you should use scp
http://linux.die.net/man/1/scp
and here you can find how to automate the login so you can use it in a script
http://linuxproblem.org/art_9.html
I can't see any easy way of avoiding a second login with scp/sftp. If you're sure that it's only the log file that will be returned you could do something like the following:
ssh -e none REMOTE SCRIPT | gzip -dc > LOGFILE
Inside SCRIPT you have something like gzip -c LOGFILE when if fails.

PSExec: How can I show a JPG file on a remote computer?

I need to start a document on a remote computer instead of an executable file, using PSExec.
I tried to provide the file name of a jpg file to psexec associated with the -c command to copy the file, but the message returned for documents (and not executables) is always "The system cannot find the file specified."
Anyone any ideas what the command-line for psexec should be?
Try to use the command:
cmd.exe /c START c:\path\to\document.jpg
Document must be on the remote computer, so you have to copy it there by other command before calling psexec.
Pick a program on that other machine that can show the JPEG and execute that, passing to it the path and name to the file you want to show.
As you've noticed, file associations doesn't work with remote execution like that, so you need to invoke the correct program instead.
In order to open a remote program and not only activate its process you have to use PSEXEC
with the -i (Interactive Mode) and MUST define the session number.
For example:
Usually on a Win7 host:
Console = Session 0
System = Session 1
User = Session 2
In order to activate and open notepad.exe on this remote Win 7 host use the following syntax:
psexec -i 2 \\ComputerName -u User -p Pass notepad.exe
Regards,
Shai Ziv
shaix.ziv#intel.com
This is the way that worked for me:
I've logged on to the via RDP:
I've copied a picture to the to "C:\Users<MyUserName>\Pictures\smiley.png"
I've opened a new powershell-window, typed "tasklist" and found out my windows session id (I simple took the highest session id I've found)
Back on my own PC:
I've downloaded PSTOOLS from https://download.sysinternals.com/files/PSTools.zip
I've unpacked PSTOOLS and placed it in "C:\Program Files\PSTools"
I've opened a new powershell-window and typed: cd "C:\Program Files\PSTools"
Finally i've started the remote PAINT with:
"C:\Program Files\PSTools\psexec" -s -i 4 "\\[RemoteComputerName]" "C:\Windows\system32\mspaint.exe" "C:\Users\[MyUserName]\Pictures\smiley.png"
P.S.: Don't forget to replace [RemoteComputerName] and [MyUserName]