Shell Script Execute on Remote Machine

本文介绍了一个用于远程执行的Shell脚本示例,该脚本能够连接到远程数据库服务器,并导出设备数据为CSV文件。具体步骤包括准备远程环境、导出数据并下载到本地。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Shell Script Execute on Remote Machine

I remember my previous company had this similar script.

#!/bin/bash

#####################################
# how to run
# ./dump-css-devices-to-csv.sh HOST PORT SYS_USER DB_NAME USER PASSWORD
#####################################

start=$SECONDS

DEFAULT_DB_HOST="localhost"
DEFAULT_PORT=22
DEFAULT_SYSTEM_USER="root"
DEFAULT_DB_USER=“admin"
DEFAULT_DB_TABLE=“test"

DB_HOST=${1:-$DEFAULT_DB_HOST}
PORT=${2:-$DEFAULT_PORT}
SYSTEM_USER=${3:-$DEFAULT_SYSTEM_USER}
DB_TABLE=${4:-$DEFAULT_DB_TABLE}
DB_USER=${5:-$DEFAULT_DB_USER}

echo "Prepare the Remote DB Server ENV for DUMP"
ssh -i ~/.ssh/sky -p $PORT $SYSTEM_USER@$DB_HOST "rm -fr /home/sillycat/css_device_dumps"
ssh -i ~/.ssh/sky -p $PORT $SYSTEM_USER@$DB_HOST "mkdir /home/sillycat/css_device_dumps"
ssh -i ~/.ssh/sky -p $PORT $SYSTEM_USER@$DB_HOST "touch /home/sillycat/css_device_dumps/css_devices_only_csv.txt"
ssh -i ~/.ssh/sky -p $PORT $SYSTEM_USER@$DB_HOST "chmod 666 /home/sillycat/css_device_dumps/css_devices_only_csv.txt"

echo "Start to dump devices to CSV"

ssh -i ~/.ssh/sky -p $PORT $SYSTEM_USER@$DB_HOST "export PGPASSWORD=$6;psql -U $DB_USER -w -d $DB_TABLE -h localhost -c \"COPY (
SELECT
DISTINCT ON (dap.serialnumber, dap.platform) dap.serialnumber as \"serialNumber\",
dap.platform,
dap.uuid as deviceUUID,
dap.enabled,
dap.pairingtoken as \"pairingToken\",
dap.currentfirmwareversion as \"firmware\",
dap.timezoneoffsetinminutes as \"timezoneOffsetinMinutes\",
dap.pairingstatus as \"pairingStatus\",
dap.lastlogindate as \"lastLoginDate\",
ua.usagetype as \"usageType\",
ua.uuid as \"userUUID\",
ua.displayName AS \"systemName\",
ua.extension AS \"extension\",
re.remoteIP as \"remoteIP\",
ug.uuid AS \"groupUUID\"
FROM
sillycat_4_1.deviceaccountpairing dap JOIN
sillycat_4_1.useraccount AS ua ON ua.id = dap.useraccountid JOIN
sillycat_4_1.usergroup AS ug ON (ua.groupid = ug.id) LEFT JOIN
sillycat_4_1.remoteendpoint AS re on (dap.serialNumber = re.serialNumber)
ORDER BY
dap.serialnumber, dap.platform, dap.lastlogindate DESC )
TO '/home/sillycat/css_device_dumps/css_devices_only_csv.txt' WITH (FORMAT CSV, HEADER, DELIMITER ',', ENCODING 'UTF8', FORCE_QUOTE *)\";"

echo "Download the CSV to Local"
# remove any old csv files already on disk
rm -f css_devices_only_csv.txt
# get users file from css database
sudo scp -i ~/.ssh/sky -P $PORT $SYSTEM_USER@$DB_HOST:/home/sillycat/css_device_dumps/css_devices_only_csv.txt ./css_devices_only_csv.txt

end=$SECONDS
duration=$(( end - start ))
echo "Script completed in $duration seconds."


Reference:
https://zaiste.net/a_few_ways_to_execute_commands_remotely_using_ssh/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值