linux shell脚本启动多终端执行命令 包括ssh远程执行命令

项目需要,启动的脚本太多,需要进行优化,主要包括多终端ros启动

直接上shell代码

gnome-terminal --title="roscore" -x bash -c "roscore"

sleep 4s
gnome-terminal --title="ccm server" -x bash -c "cd ~/ccmslam_multi_ws;
source devel/setup.bash;
roslaunch ccmslam Server.launch;"
 
gnome-terminal --title="ccm rviz" -x bash -c "cd ~/ccmslam_multi_ws;
source devel/setup.bash;
cd ~/ccmslam_multi_ws/src/ccm_slam/cslam;
rviz -d conf/rviz/ccmslam.rviz;"
 


gnome-terminal --title="avs_listen" -x bash -c "cd ~/catkin_xavs_feature;
source devel/setup.bash;
echo 'avs_listen'
rosrun ros_xavs2 listen_stream;"


gnome-terminal --title="detection" -x bash -c "cd ~/detection_ws;
source devel/setup.bash;
roslaunch darknet_ros darknet_ros.launch;"

sleep 3s
gnome-terminal --title="avs_send" -x bash -c "bash ssh_avs.sh"
gnome-terminal --title="ccm_client1_robot16" -x bash -c "bash ssh_ccm_dadao16.sh"
gnome-terminal --title="ccm_client2_robot10" -x bash -c "bash ssh_ccm_dadao10.sh"


其中包括远程ssh的脚本,为了避免ssh输入密码,
安装sshpass传密码,sshpass -p password ssh user@ip
缺点:明文传密码
ssh_ccm_dadao16.sh如下

sshpass -p '.' ssh [email protected] "cd ccmslam_ws;
source /opt/ros/kinetic/setup.bash;
export ROS_MASTER_URI=http://192.168.3.6:11311;
export ROS_HOSTNAME=192.168.3.5;
source devel/setup.bash;
roslaunch ccmslam Client_dadao10_rgbd.launch;
"

需要注意的是这样启动程序在ctrl+c结束之后程序不会停止,仍然在后台执行,所以需要手动清理进程,网上有获取进程号然后kill 的,这里简单的用进程名kill

sshpass -p '.' ssh [email protected] "bash clear_all.sh;
exit
"

sshpass -p '.' ssh [email protected] "bash clear_all.sh;
exit
"

sshpass -p '.' ssh [email protected] "bash clear_all.sh;
exit
"


你可能感兴趣的:(脚本编程python,linux相关,项目相关,linux,shell,bash)