Add Account, Region and Instance info for each report

So we can easy match up user reports to other information we collect
This commit is contained in:
Clemens Schwaighofer
2023-12-22 11:54:34 +09:00
parent 50e28c7cfd
commit 694f04313c

View File

@@ -35,6 +35,14 @@ if [ ! -d "${LOG}" ]; then
echo "log folder ${LOG} not found"; echo "log folder ${LOG} not found";
exit; exit;
fi; fi;
if [ -z $(command -v curl) ]; then
echo "Missing curl application, aborting";
error=1;
fi;
if [ -z $(command -v jq) ]; then
echo "Missing jq application, aborting";
error=1;
fi;
# option 1 in list # option 1 in list
case "${1,,}" in case "${1,,}" in
text) text)
@@ -45,18 +53,28 @@ case "${1,,}" in
echo "{"; echo "{";
;; ;;
csv) csv)
CSV_LINE="%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n";
OUTPUT_TARGET="csv"; OUTPUT_TARGET="csv";
echo "Hostname,Username,Main Group,SSH Group,Account Created Date,Account Age,Last Login Date,Last Login Age,Never Logged In,Login Source,Status"; echo "Account ID,Region,Instance ID,Hostname,Username,Main Group,SSH Group,Account Created Date,Account Age,Last Login Date,Last Login Age,Never Logged In,Login Source,Status";
;; ;;
*) *)
OUTPUT_TARGET="text"; OUTPUT_TARGET="text";
;; ;;
esac; esac;
# collect info via: curl http://instance-data/latest/meta-data/
instance_id=$(curl -s http://instance-data/latest/meta-data/instance-id)
account_id=$(curl -s http://instance-data/latest/meta-data/identity-credentials/ec2/info/ | jq -r .AccountId)
region=$(curl -s http://instance-data/latest/meta-data/placement/region)
if [ "${OUTPUT_TARGET}" = "text" ]; then if [ "${OUTPUT_TARGET}" = "text" ]; then
LOG="${LOG}/check_ssh_user."$(date +"%F_%H%m%S")".log"; LOG="${LOG}/check_ssh_user."$(date +"%F_%H%m%S")".log";
exec &> >(tee -a "${LOG}"); exec &> >(tee -a "${LOG}");
echo "[START] =============>"; echo "[START] =============>";
echo "AWS ID : ${account_id}";
echo "Region : ${region}";
echo "Instance ID : ${instance_id}";
echo "Hostname : "$(hostname); echo "Hostname : "$(hostname);
echo "Run date : "$(date +"%F %T"); echo "Run date : "$(date +"%F %T");
echo "Max age last login : ${max_age_login} days"; echo "Max age last login : ${max_age_login} days";
@@ -64,6 +82,9 @@ if [ "${OUTPUT_TARGET}" = "text" ]; then
echo "Max age no login : ${max_age_create} days"; echo "Max age no login : ${max_age_create} days";
elif [ "${OUTPUT_TARGET}" = "json" ]; then elif [ "${OUTPUT_TARGET}" = "json" ]; then
echo '"Info": {' echo '"Info": {'
echo '"AccountId": "'${account_id}'",';
echo '"Region": "'${region}'",';
echo '"InstanceId": "'${instance_id}'",';
echo '"Hostname": "'$(hostname)'",'; echo '"Hostname": "'$(hostname)'",';
echo '"Date": "'$(date +"%F %T")'",'; echo '"Date": "'$(date +"%F %T")'",';
echo '"MaxAgeLogin": '${max_age_login}','; echo '"MaxAgeLogin": '${max_age_login}',';
@@ -106,7 +127,7 @@ for ssh_group in ${ssh_groups[@]}; do
echo "}"; echo "}";
;; ;;
csv) csv)
printf "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n" "$(hostname)" "${username}" "" "${ssh_group}" "" "" "" "" "true" "${out_string}" printf "${CSV_LINE}" "${account_id}" "${region}" "${instance_id}" "$(hostname)" "${username}" "" "${ssh_group}" "" "" "" "" "true" "${out_string}"
;; ;;
esac; esac;
continue; continue;
@@ -261,7 +282,7 @@ for ssh_group in ${ssh_groups[@]}; do
echo "}"; echo "}";
;; ;;
csv) csv)
printf "%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s\n" "$(hostname)" "${username}" "${main_group}" "${ssh_group}" "${user_create_date_out}" "${account_age}" "${last_login_date}" "${last_login}" "${never_logged_in}" "${login_source}" "${out_string}" printf "${CSV_LINE}" "${account_id}" "${region}" "${instance_id}" "$(hostname)" "${username}" "${main_group}" "${ssh_group}" "${user_create_date_out}" "${account_age}" "${last_login_date}" "${last_login}" "${never_logged_in}" "${login_source}" "${out_string}"
;; ;;
esac; esac;
done; done;