I need to write a bat/cmd script that executes a few applications sequentially after I have ran a node.JS socket server. I am doing this using Cygwin. I think the problem is/what I can't get my head around is waiting for Cygwin to login before executing a command.
So is there any way to listen for the login to be complete. Before entering commands to cygwin?
bash --login -i
any pointers will be appreciated.
thanks Jono
http://getgnuwin32.sourceforge.net/
Cygwin is not for such kind of work.
Gnuwin32 is native port of GNU UNIX coreutils and more.
They are native and live in cmd.exe.
Related
I haven't been able to find a similar question, but I can't imagine this is an issue that comes up too much.
At my workplace I've decided to switch over to a full Linux experience by using Cygwin, over what I was previously using, Git Bash.
The only slight drawback is that we have a script written in Ruby that deploys changes to our site. I can run this from my Git Bash terminal no problem, but not Cygwin as there doesn't seem to be a Ruby installation on here. I've learned about sending standard output to other terminal windows, but I've only been successful when both terminals have been the same shell.
What I'd like to do is the following:
1. Type a command into Cygwin that opens a Git Bash terminal and automatically runs ./deploy.sh on that Git Bash terminal upon opening.
2. If possible, also pass in an argument in the same command, that the script expects upon running. (In this case it's whether we want to deploy to our staging or production server).
Is this possible? So far I can get what looks to be a Git Bash terminal to open and prompt me for the server, but when I enter it, it does not work. I get an error with regards to a command within the script not being found. Thing is, running this same ./deploy.sh script in a Git Bash terminal that I open myself works perfectly as it always has. The Git Bash terminal that is being opened by Cygwin does not appear to have all of the capabilities of a Git Bash terminal I open 'the normal way'.
The command I am running so far from Cygwin is as follows:
/cygdrive/c/'Program Files'/Git/git-bash.exe "./deploy.sh"
I understand there is probably a way of getting this to work by installing Ruby via Cygwin but I'd like to mess around with my work environment as little as possible in case I somehow affect my ability to deploy my work... and besides, Git Bash definitely runs this script without an issue so I can't see why I would need a duplicate installation.
Many thanks!
I am attempting to install RetroPie as an app on Raspbian Stretch and I am done except for creating a desktop shortcut for it. The problem is that the only way to open RetroPie seems to be running a command in the command line. I can’t do it in terminal because it gives me an error saying that it can’t initialize the window. Is there a way to run a command line command as a shortcut or am I going to have to find another way of doing this?
P.S. Here is the tutorial that I followed to install RetroPie:
https://www.makeuseof.com/tag/install-retropie-app-raspberry-pi/
Probably your shell (on the raspberry) is GNU bash. So read the manual of GNU bash.
You probably want (once) to edit some Bash startup file (such as ~/.bashrc) to define functions and aliases there, and you could add executable shell scripts somewhere in your $PATH. I recommend having a $HOME/bin/ directory containing your scripts and executables, and have $HOME/bin/ early in your $PATH.
I can’t do it in terminal because it gives me an error saying that it can’t initialize the window.
Perhaps you need some display server (such as Xorg or Wayland) running (with a desktop environment or a window manager). You could run Xorg on your PC (on which you could install Linux) and connect to the raspberry using ssh -X then remote applications running on your Raspberry are displayed on your PC. IF your Raspberry is directly connected to a screen (via HDMI) you might run some Xorg server on it.
Is there a way to run a command line command as a shortcut
Yes, by making a shell alias or shell function or shell script. You need to understand how they work and change or create some appropriate file using some source code editor (I recommend GNU emacs, but the choice is yours and you might use any other editor such as vim, gedit, etc...): functions and aliases could be defined in your ~/.bashrc; shell scripts would usually have their own file with a shebang under your $HOME/bin/...
I am following this https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git and I am stack on step 5, I want to open git bash in a linux server using putty. How will I do that? In windows, there is gitbash cmd desktop app. But in linux how will you get from normal command line to git bash?
Note: I am using putty to access the linux server. If there is other way also, please recommend me.
“Git bash” under Windows simulates a Linux environment (it uses MinGW behind the scenes, afaik).
Under a Linux distribution, you just have to have a version of Git installed. With a Debian based distribution you would for example run sudo apt-get install git (or git-core for older releases) on the command line.
Once installed, you can use it from the command line without further ado.
Actually Windows gitbash is an emulation of a bash command interpreter designed for UNIX systems. On many Linux distributives bash is a default command shell. So, when you're connecting to a Linux via putty, you're actually entering a bash shell. There's nothing more you need. You can use it the similar way as you're using windows gitbash. In a nutshell, just omit the first item in the spet 5 of your tutorial: you probably already in the bash shell.
To check out which shell you're using, run this command: ps -p $$. It will output something like this:
PID TTY TIME CMD
10967 ttys000 0:01.68 -bash
The CMD field is the shell name you're using.
I am using linux server from cPanel. Now I need to use one of the linux command to run. And the command is 'timeout'. My command is something as below
$timeout 2s ./myexecutable < input > output
This is just running ok in my linux machine. But I want to run it in server(linux). But it is not running out there. I saw error log using 2>$1 . and it says command not found.
So how do I specify the path. That means how can I know the exact path to run it.
I am very new to this type of server stuff, so please don't be rude :D.. whatever you know please help me to get out of it.
thank you
On Mac, you can use gtimeout from the coreutils package. To install it, run
brew install coreutils
If you need the command to be called "timeout" then you can alias it.
alias timeout="gtimeout"
I just want to create a auto script on windows which could do run some comand through ssh on a reomote linux.
I know it's easy to write script between linux(ssh client) and linux(ssh server).
But I do not know how to create a script on windows(ssh client) to remote connect to linux(ssh server)
If it's just some command lines you want to run then plink will be enough IMHO..
Goodluck.
Most popular languages have ssh libraries you can use, pick a language you are familiar with and then go library hunting.
I've used these with success:
C - libssh
.NET - SharpSSH
Python - Paramiko or Really Simple SSH or Fabric
use plink (get it from putty website) and a bat file format like this:
Plink.exe -ssh -pw %password5 %linuxuser%#%servver% /path/to/script/script.sh
Save em in same folder -> run your awesome masterpiece
One way is to install Cygwin and use a shell script to run ssh commands. You can launch this script by running sh.exe with arguments.
This way, you can do the job with the same Linux tools (sh and OpenSSH) that you are already familiar with.