Articles of ssh

后台进程closuresssh客户端后终止

我的问题和我已经在这里 , 这里和这里find的一样 。 但是,对我来说nohup不起作用。 编译screen给出错误,并且不允许,Control + Z不会使进程“停止”。 我运行一个将数据写入文件的数据生成二进制文件,并在屏幕上输出状态消息(stdout)。 我尝试了以下 nohup ./sp2b <options for sp2b> > output & 当我注销terminal并重新login时,进程已经被终止。 我其实也想花时间,所以想做的 nohup time ./sp2b <options for sp2b> > output & 为什么nohup不在我的情况下工作?

在守护进程模式下限制rsync

我试图在一台名为node0的机器上以守护进程模式运行rsync。 我希望机器只接受来自node0(self)或node1(定义的其他一些机器)的连接, 我想要使​​用它的唯一path/ tmp /。 因此,对于任何原始机器,任何其他path的读/写操作都是不允许的。 我不希望用户限制,也不需要通过ssh运行rsync。 我已经build立/etc/rsyncd.conf如下: syslog facility = syslog max verbosity = 3 log file = /var/log/mylog.log port = 873 [Proj1] path = /tmp/ include = /tmp/ exclude = * comment = some comment hosts allow = node0, node1 hosts deny = * max verbosity = 3 log file = /var/log/filedistributer.log 我比使用以下命令在守护进程模式下执行rsync: […]

是否可以使用远程主机上不存在的子域来设置ssh反向隧道?

我想能够在本地主机上testing,但我正在与需要公共主机的API进行集成。 在某些情况下,API不喜欢端口。 这可能会更容易用例子来解释。 我现在在做什么: ssh -nN -f -R myexternaldomain.com:49086:localhost:86 myid@mydomain.com 但是,当我告诉他们ping https://myexternaldomain.com:49086时,API不喜欢它 我想做什么的想法: ssh -nN -f -R subdomain.myexternaldomain.com:localhost:86 myid@mydomain.com 目标是,当有人点击https://subdomain.myexternaldomain.com它会转发stream量到我的笔记本电脑上的端口86。 有没有办法实现这一点,如果该子域不存在,没有configurationmyexternaldomain.com?

Jsch – 通过SSH连接发送命令

我想发送一个简单的命令与我的Windows电脑上的Java应用程序,以激活我的树莓派的Python脚本,应该控制我的树莓派的GPIO端口。 我没有真正进入Jsch,我的SSH连接已经工作,但不发送命令。 这是我的实际代码: package sshtest; import java.io.ByteArrayInputStream; import java.io.InputStream; import com.jcraft.jsch.*; import java.io.InputStream; public class SSHTest { public static void main(String[] args) { String host="DELETED"; String user="pi"; String password="DELETED"; String command =("cd Desktop"); String command2 =("sudo python IO2.py all high"); try{ java.util.Properties config = new java.util.Properties(); config.put("StrictHostKeyChecking", "no"); JSch jsch = new JSch(); Session session=jsch.getSession(user, […]

在交互式运行ssh和非交互式shell模式之间是否有区别?

执行ssh进入一个远程节点并在那里运行命令是有区别的,例如ssh azg@zeus然后运行命令而不是脚本风格ssh azg@zeus 'command1 && command2 && command3 && etc' ? 我问这是因为我看到应用程序不完全相同,例如Akka工作,但是当我使用脚本第二select运行相同的服务器启动时,会在日志中产生一些奇怪的错误。 例如,两种口味都会平等加载.bashrc吗? 注意即使我的第一个命令是source .bashrc我也会看到不同之处

绕过Linux集群网关 – 直接从您的桌面节点

从我的桌面我通常执行这个命令去linux群集: 我有这个在我的.bash_profile alias gothere="ssh -i ~/.ssh/id_rsa_macmini_mine pdubois@thelinux.cluster.co.jp" 然后用它调用它去到集群: dhcp190-206:~ pdubois-macmini$ gothere Last login: Tue Mar 25 15:41:03 2014 from dhcp190-206.mycompany-u.ac.jp [pdubois@thelinuxcluster ~]$ 然后,一旦我到达该群集的网关,我再次这样做去节点: alias blogin="bsub -Is -q intj bash -l" 调用这种方式去节点: [pdubois@thelinuxcluster ~]$ blogin Job <221825> is submitted to queue <intj>. <<Waiting for dispatch …>> <<Starting on clusternode61>> [pdubois@clusternode61 ~]$ 我的问题是,有没有办法将上述两步简化为一步? 这样我就可以从我的桌面直接进入群集节点。

如何使用shell脚本检查两台机器中的文件夹?

我正在研究一个我需要在machineX上运行的shell脚本。 它将在其他两台机器( machineQ和machineQ此文件夹MAPPED_LOCATION中检查某个文件夹的格式为YYYYMMDD 。 所以在machineQ和machineQpath都是这样的 – /bat/testdata/t1_snapshot/20140311 在上面的文件夹path里面会有一些文件。 下面是我的shell脚本 – #!/bin/bash readonly MACHINES=(machineP machineQ) readonly MAPPED_LOCATION=/bat/testdata/t1_snapshot readonly FILE_TIMESTAMP=20140311 # old code which I was using to get the latest folder inside each machine (P and Q) dir1=$(ssh -o "StrictHostKeyChecking no" david@${MACHINES[0]} ls -dt1 "$MAPPED_LOCATION"/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] | head -n1) dir2=$(ssh -o "StrictHostKeyChecking no" david@${MACHINES[1]} ls -dt1 "$MAPPED_LOCATION"/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] […]

scp到远程主机,而不在该主机上执行bash_profile文件

我有一个主机,其.bash_profile文件有一些用户提示(bash读取命令),在读取用户input后,根据input执行一些命令。 这工作得很好。 现在,当我尝试scp东西到这个主机,它执行.bash_profile (因为scp首先ssh到远程主机),它会提示用户input和scp失败。 我想要的是跳过执行.bash_profile当有人试图scp到这个主机(我个人认为这是不可能的),或知道某人正在试图scp在.bash_profile (以某种方式捕捉在.bash_profile ),并跳过一些相应的命令。 TIA

“无法统计远程文件:没有这样的文件或目录”:在shell脚本中使用FTP从* nix到Win

我正在使用Bash脚本通过FTP备份我的web文件。 正如标题所说,我有一个Ubuntunetworking服务器,并备份到Windows机器。 我在Windows机器上有一个ssh程序和FileZilla Server,并且可以将SSH和SFTP放入它。 脚本的核心是这样的: SRCDIR="C:\\Users\\Tech1\\testserverbackup" DATAIN="/var/www/html/" FILENAME="-r *" sshpass -e sftp -oBatchMode=no -b – ${USER}@${LANHOST} << EOF cd ${SRCDIR} lcd ${DATAIN} mkdir $(date -I) cd $(date -I) put ${FILENAME} bye echo made it EOF 其他的变数是有点敏感的,所以我不想张贴,但凭证已经为我工作到目前为止。 我得到的错误是这样的: sftp> cd C:\Users\Tech1\testserverbackup Couldn't stat remote file: No such file or directory 我已经ssh进入文件夹和sftp'd,所以我不知道是什么问题。 AFAIK,cd是本地windows命令,不仅仅是FTP命令。 任何想法出了什么问题? 谢谢。

perl grep在ssh2-> exec中找不到任何东西

我devise了一个程序,遍历我的所有应用程序中不同Solaris(Unix)框中的每个日志文件,并查找某个错误。 所以,我devise了这样的程序: my $ssh2 = Net::SSH2->new(); $ssh2->connect($host) or die "Unable to connect Host $@ \n"; $ssh2->auth_keyboard($user,$pass) or die "Unable to login $@ \n"; $chan1 = $ssh2->channel(); $chan1->exec("find /apps/appName/loc/Logs/server/ -type f | xargs grep \"CVS Call\" "); while(<$chan1>) { print $_ . "\n"; } 如果我只想说一句话(只是'CVS'),那就行了。 但是,第二个我添加一个空格或一个点没有find任何东西。 我尝试用[[:space:]]或[:space:]replace空格,但仍不显示任何结果。 我知道日志文件包含此错误的事实。 我也试过: $chan1->exec("find /apps/appName/loc/Logs/server/ -type f -exec grep 'CVS […]