> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Linux Script

> Creates secure connections to execute commands and scripts on remote Linux servers via SSH. You can perform rapid DevOps automation by executing commands and scripts on remote Linux servers via SSH

## Overview

<AccordionGroup>
  <Accordion title="What is its Purpose?">
    <CardGroup cols={1}>
      <Card title="DevOps Automation">
        Enables Integration Flow or Connector steps to trigger scripts/commands on remote Linux servers and centralizes DevOps automation.
      </Card>

      <Card title="Credential Management">
        Makes maintenance, deployment, or monitoring scripts reusable with centralized credential management and reduces manual SSH dependency.
      </Card>

      <Card title="Project-Based Isolation">
        Enables traceable use of the same configuration across Development/Test/Production environments through project-based isolation.
      </Card>

      <Card title="Active/Passive Management">
        Allows safe stopping of triggered tasks during planned maintenance through active/passive connection management.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Working Principle">
    <CardGroup cols={2}>
      <Card title="Connection Initiation" icon="play">
        When a Linux Script connection is requested from within an Integration Flow or Connector, the system reads the configured connection parameters.
      </Card>

      <Card title="Connection Pool Management" icon="database">
        Worker nodes open SSH sessions on-demand; a short-term lightweight cache is used for the same credentials to reduce unnecessary session opening costs.
      </Card>

      <Card title="Authentication" icon="lock">
        Authentication to the target Linux server is performed with username/password-based SSH Authentication mechanism.
      </Card>

      <Card title="Data Communication" icon="send">
        Script body and variables are sent over SSH channel, output stream returns to Connector as JSON.
      </Card>

      <Card title="Connection Management" icon="settings">
        After the operation completes, the connection is closed and temporary credential data on the worker is cleared from memory.
      </Card>

      <Card title="Error Management" icon="alert-circle">
        In case of connection error, timeout, or authentication error, detailed error code and message are generated with CustomParameterizedException; root cause is tracked through logs.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Use Cases">
    <CardGroup cols={2}>
      <Card title="Deployment Automation" icon="rocket">
        Automatic triggering of pre/post-deployment scripts
      </Card>

      <Card title="Log and Metric Collection" icon="bar-chart">
        Periodic execution of log dumps or metric collection
      </Card>

      <Card title="System Health Check" icon="activity">
        Execution of system health checks for configuration drift control
      </Card>

      <Card title="Security Management" icon="shield">
        Sequential deployment of security patches or package updates
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Technical Features and Capabilities

<AccordionGroup>
  <Accordion title="Basic Features">
    <CardGroup cols={2}>
      <Card title="Script Triggering via SSH" icon="terminal">
        Executes parametric bash scripts on remote Linux server without requiring interaction.
      </Card>

      <Card title="Real-time Output and Error Collection" icon="file-text">
        Carries standard output and error streams back to Integration Flow steps; shares with Connector variables.
      </Card>

      <Card title="Project-Based Isolation" icon="folder">
        Each connection is tagged with a project, projects other than ADMIN\_PROJECT\_ID cannot see other projects' resources.
      </Card>

      <Card title="Environment-Based Configuration" icon="code-branch">
        Ability to define separate connection parameters for each environment (Development, Test, Production).
      </Card>

      <Card title="Enable/Disable Control" icon="toggle-on">
        Activating or deactivating the Connection (enable/disable toggle). In passive state, connection cannot be used but its configuration is preserved.
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Advanced Features">
    <CardGroup cols={2}>
      <Card title="Dynamic Variable Injection" icon="code">
        Global, previous task, or loop variables from Connector steps can be injected into script body.
      </Card>

      <Card title="Connector Integration" icon="plug">
        connector-linux-script component pulls connection list in real-time and makes new connections available as soon as they are added.
      </Card>

      <Card title="Centralized Event Logging" icon="file-lines">
        Success/error scenarios are logged with ApinizerMessageService and monitored simultaneously at UI and log layers.
      </Card>

      <Card title="Connection Test Feature" icon="flask">
        Ability to validate connection parameters before saving with "Test Connection" button.
      </Card>

      <Card title="Export/Import Feature" icon="file-export">
        Export connection configuration as ZIP file. Import to different environments (Development, Test, Production). Version control and backup capability.
      </Card>

      <Card title="Connection Monitoring" icon="chart-line">
        Monitoring connection health, pool status, and performance metrics.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Connection Parameters

<AccordionGroup>
  <Accordion title="Required Parameters">
    <CardGroup cols={1}>
      <Card title="Name" icon="tag">
        **Description:** Connection name (must be unique)\
        **Example Value:** `Production_LinuxScript`\
        **Notes:** Cannot start with space, special characters should not be used
      </Card>

      <Card title="Host Name" icon="server">
        **Description:** Fully qualified domain name or IP address of Linux server to be accessed via SSH\
        **Example Value:** `ops-runner-01.apmz.local`\
        **Notes:** DNS resolution must be possible, must be accessible from relevant worker
      </Card>

      <Card title="SSH Port" icon="network">
        **Description:** Port used to connect to SSH service\
        **Example Value:** `22`\
        **Notes:** Default 22; if different port is used for security reasons, it must be opened in Network/Firewall
      </Card>

      <Card title="Username" icon="user">
        **Description:** Service or automation user on remote server\
        **Example Value:** `deploysvc`\
        **Notes:** Should be a restricted user with only necessary folder/script permissions
      </Card>

      <Card title="Password" icon="lock">
        **Description:** Password for the user (stored encrypted)\
        **Example Value:** (Encrypted value)\
        **Notes:** Required in UI; validated in test connection before saving
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Optional Parameters">
    <CardGroup cols={1}>
      <Card title="Description" icon="file-text">
        **Description:** Purpose or scope description of the Connection\
        **Default Value:** (Empty)\
        **Recommended Value:** Should include task, server, and risk information
      </Card>

      <Card title="Deploy To Worker" icon="upload">
        **Description:** Determines whether the connection will be deployed to Integration Workers\
        **Default Value:** `true`\
        **Recommended Value:** Recommended to deploy only to worker pools where it will be used
      </Card>

      <Card title="Environment (Ortam)" icon="layers">
        **Description:** Development/Test/Production selection\
        **Default Value:** `Development`\
        **Recommended Value:** Appropriate credential selection should be made for the environment
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Timeout and Connection Pool Parameters

<CardGroup cols={2}>
  <Card title="Connection Timeout" icon="clock">
    **Description:** Maximum wait time for connection establishment\
    **Default:** 5000 ms\
    **Min:** 1000 ms | **Max:** 30000 ms
  </Card>

  <Card title="Request Timeout" icon="hourglass">
    **Description:** Maximum wait time for request response\
    **Default:** 60000 ms\
    **Min:** 5000 ms | **Max:** 180000 ms
  </Card>

  <Card title="Pool Size" icon="layer-group">
    **Description:** Maximum number of connections in connection pool\
    **Default:** 5\
    **Min:** 1 | **Max:** 20
  </Card>

  <Card title="SSH KeepAlive Interval" icon="repeat">
    **Description:** Keep-alive interval sent to keep session open during long operations\
    **Default:** 30000 ms\
    **Min:** 5000 ms | **Max:** 60000 ms
  </Card>
</CardGroup>

## Use Cases

<CardGroup cols={2}>
  <Card title="Service Restart After Live Deployment" icon="refresh-cw">
    **Situation:** Need to restart services after Rolling Deployment completes\
    **Solution:** Define service node as host name, systemctl restart commands as script, SSH Port 22\
    **Expected Result:** Script executes successfully, services restart sequentially
  </Card>

  <Card title="Log Archiving" icon="archive">
    **Situation:** Compressing daily logs and sending to FTP\
    **Solution:** Use tar and scp commands in script, give user relevant folder permission\
    **Expected Result:** Logs are collected, file path returns in Connector output when transfer completes
  </Card>

  <Card title="Security Patch Check" icon="shield">
    **Situation:** Reporting patch level at certain intervals\
    **Solution:** Select this connection in Scheduled Job, script returns yum check-update output\
    **Expected Result:** Report is transferred to SIEM via Integration Flow
  </Card>

  <Card title="Configuration Drift Detection" icon="search">
    **Situation:** Checksum tracking of critical files under /etc\
    **Solution:** Script produces sha256sum output, result is processed as JSON\
    **Expected Result:** Files with detected drift are logged as warnings
  </Card>

  <Card title="Disaster Recovery Test" icon="alert-triangle">
    **Situation:** Infrastructure validation before failover in DR scenario\
    **Solution:** Create separate connection copies for host clusters, each runs health-check.sh\
    **Expected Result:** DR conditions are confirmed on success, process is stopped on error
  </Card>

  <Card title="High Resource Usage (Optional)" icon="activity">
    **Situation:** Automatic intervention when CPU/RAM increases\
    **Solution:** Script analyzes top output and restarts services\
    **Expected Result:** Automatic correction is performed when threshold is exceeded, connector log contains details
  </Card>
</CardGroup>

## Connection Configuration

### Creating New Linux Script

<img src="https://mintcdn.com/apinizer/YX1NcEKlSBeHefxE/images/yonetici/baglantilar/linux-variable-new.png?fit=max&auto=format&n=YX1NcEKlSBeHefxE&q=85&s=fb9c3b4e78329ba34847334e00f96b74" alt="Image 2024 9 9 15 35 35 Pn" width="1000" className="mr-auto" data-path="images/yonetici/baglantilar/linux-variable-new.png" />

#### Configuration Steps

<Steps>
  <Step title="Navigate to Creation Page">
    * Go to **Connection → Linux Script** section from left menu.
    * Click **\[+ Create]** button at top right.
  </Step>

  <Step title="Enter Basic Information">
    **Enable Status (Active Status):**

    * Set active/passive status with toggle. New connections are active by default.

    **Name - Required:**

    * Example: `Production_LinuxScript`
    * Enter unique name, cannot start with space.
    * System automatically checks. Green checkmark: available. Red X: existing name.

    **Description:**

    * Example: "Prod node restart scripts"
    * Max. 1000 characters.
    * Describe the purpose of the Connection.

    <Info>
      In the action button area at the top of the page, you can use the **\[\<> Variable]** button to select dynamic values, and with global variables, you can manage connection parameters with variable-based values instead of fixed values. For detailed information, review the [Dynamic Variables](/en/concepts/core-concepts/dynamic-variables) page.
    </Info>
  </Step>

  <Step title="Environment Selection">
    * Select environment from dropdown menu: **Development**, **Test**, or **Production**.
    * Different connection parameters can be defined for each environment.
  </Step>

  <Step title="Linux Server Parameters">
    * **Host Name:** Enter Linux server where script will run with fully qualified domain name (FQDN) or IP.
    * **SSH Port:** Default is 22; if security policy is different, write new port and ensure it's opened in firewall.
    * Host access should be tested from worker; inaccessible servers will error during save.
  </Step>

  <Step title="Credentials and Script Permissions">
    * **Username:** Use service user with only necessary directory/script permissions.
    * **Password:** Password field is tested before saving and stored encrypted in database.
    * Ensure user has execute permission on target scripts.
  </Step>

  <Step title="Timeout and Connection Pool Settings">
    * Adjust connection timeout, request timeout, and pool size values according to workload.
    * Prevent SSH session from closing by reducing keep-alive interval for long-running commands.
  </Step>

  <Step title="Security and Authentication Settings">
    * Fill credentials from secret manager or environment variable.
    * If SSL/TLS tunneling is required, configure port forwarding through bastion host.
    * Do not use root account; define only service user with necessary permissions.
  </Step>

  <Step title="Test Connection">
    * Click **\[Test Connection]** button.
    * Test whether connection parameters are correct.
    * **Success:** Green confirmation message
    * **Failed:** Error details are shown
  </Step>

  <Step title="Save">
    * Click **\[Save and Deploy]** button at top right.

    **Checklist:**

    * Unique name
    * Required fields filled
    * Test connection successful (recommended)

    **Result:**

    * Connection is added to list
    * Becomes available in Integration Flow and Connector steps
    * Becomes active according to environment

    <Check>
      Connection created successfully! You can now use it in Integration Flow and Connector steps.
    </Check>
  </Step>
</Steps>

### Deleting Connection

<CardGroup cols={2}>
  <Card title="Delete Operation" icon="trash">
    Select **Delete** from **⋮** menu at end of row or click **\[Delete]** button on connection detail page
  </Card>

  <Card title="Delete Tips" icon="info-circle">
    **Check Before Deleting:** May be used in Integration Flow or Connector steps. If necessary, assign an alternative connection. Back up with **Export** before deleting
  </Card>

  <Card title="Alternative: Deactivate" icon="toggle-off">
    Use **Disable** option instead of deleting. Connection becomes passive but is not deleted. Can be reactivated when needed
  </Card>
</CardGroup>

### Exporting/Importing Connection

<Info>
  In this step, users can export existing connections for backup, moving to different environments, or sharing purposes, or import a previously exported connection again. This operation is used to maintain data integrity in version control, transitions between test and production environments, or inter-team sharing processes.
</Info>

<AccordionGroup>
  <Accordion title="Export">
    <CardGroup cols={2}>
      <Card title="Method 1" icon="download">
        Select **⋮ → Export** from action menu. ZIP file is automatically downloaded.
      </Card>

      <Card title="Method 2" icon="file-export">
        Click **\[Export]** button on connection detail page. ZIP file is downloaded.
      </Card>

      <Card title="File Format" icon="file-zipper">
        Format: `Date-connection-ConnectionName-export.zip`\
        Example: `13 Nov 2025-connection-Production_LinuxScript-export.zip`
      </Card>

      <Card title="ZIP Contents" icon="folder-open">
        * Connection JSON file
        * Metadata information
        * Dependency information (e.g., certificates, key store)
      </Card>

      <Card title="Use Cases" icon="list-check">
        * Backup
        * Moving between environments (Test → Prod)
        * Versioning
        * Team or project-based sharing
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Import">
    <CardGroup cols={2}>
      <Card title="Import Steps" icon="upload">
        * Click **\[Import Linux Script]** button on main list.
        * Select downloaded ZIP file.
        * System checks: Is format valid? Is there name conflict? Are dependencies present?
        * Then click **\[Import]** button.
      </Card>

      <Card title="Import Scenarios" icon="info-circle">
        **Scenario 1: Name Conflict** → Overwrite old connection or create with new name.

        **Scenario 2: Missing Dependencies** → Create missing certificates or key stores first or exclude during import.
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

### Connection Usage Areas

<CardGroup cols={2}>
  <Card title="Creating and Activating Connection" icon="plus-circle">
    **Steps:**

    1. Create the connection
    2. Validate connection with **Test Connection**
    3. Save and activate with **Save and Deploy**
    4. Ensure connection is in **Enabled** state
  </Card>

  <Card title="Usage in Integration / Connector Steps" icon="workflow">
    Linux script connector selects this connection in Scheduled Job or ops steps within Integration Flow. Examples: "Execute Linux Script", "Pre-Deployment Hook", "Health Check" steps. Connection selection is made from Connection field in these steps' configuration
  </Card>

  <Card title="Scheduled Job Usage" icon="clock">
    In scheduled tasks (e.g., daily log archiving, resource usage measurements), commands are executed on remote servers by selecting this connection. Job behavior is updated immediately when connection changes
  </Card>

  <Card title="Test Usage" icon="check-circle">
    Connection correctness can be checked independently from Integration Flow with Connection Test feature. This test is critical in debugging process
  </Card>
</CardGroup>

## Best Practices

<AccordionGroup>
  <Accordion title="Do's and Best Practices">
    <CardGroup cols={2}>
      <Card title="SSH User Management" icon="users">
        **Bad:** Sharing root account for all scripts\
        **Good:** Create separate service user for each team\
        **Best:** Give permission only to necessary commands in sudoers file according to least privilege principle
      </Card>

      <Card title="Command Versioning" icon="git-branch">
        **Bad:** Manually maintaining current scripts\
        **Good:** Store script content in VCS and copy to Connector\
        **Best:** Use IaC processes that automatically update script during pipeline
      </Card>

      <Card title="Output Management" icon="file-text">
        **Bad:** Writing long outputs directly to logs\
        **Good:** Filter critical lines\
        **Best:** Standardize output in JSON format and pass as parameter to subsequent steps in Integration Flow
      </Card>

      <Card title="Resource Consumption" icon="activity">
        **Bad:** Triggering dozens of long-running scripts simultaneously\
        **Good:** Spread access with scheduled jobs\
        **Best:** Continuously monitor and adjust pool size and keep-alive values according to traffic
      </Card>

      <Card title="Environment Management" icon="layers">
        **Bad:** Using same connection parameters in all environments\
        **Good:** Create separate connection for each environment\
        **Best:** Manage all environments in single connection using Environment option, only change environment during transitions between environments
      </Card>

      <Card title="Connection Test" icon="check-circle">
        **Bad:** Saving and deploying connection without testing\
        **Good:** Validate with Test Connection before saving\
        **Best:** Test after every parameter change, perform full integration test in test environment before going to production
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Security Best Practices">
    <CardGroup cols={2}>
      <Card title="Credential Rotation" icon="refresh-cw">
        Renew passwords periodically, create new connection during rotation plan and disable old one
      </Card>

      <Card title="Bastion Host Usage" icon="shield">
        Tunnel through bastion instead of leaving direct internet-exposed port for production servers and apply IP whitelisting
      </Card>

      <Card title="Command Authorization" icon="lock">
        Give user permission to run scripts only in allowed directories, restrict sudo requirement command-based in sudoers file
      </Card>

      <Card title="Credential Management" icon="key">
        Store sensitive information such as username and password using environment variable or secret manager. Do not hardcode credentials in code or configuration files. Update passwords periodically
      </Card>

      <Card title="SSL/TLS Usage" icon="shield-check">
        Always enable SSL/TLS in production environment. Use self-signed certificates only in development environment. Track certificate expiration dates and renew on time
      </Card>

      <Card title="Access Control" icon="user-check">
        Allow only authorized users to change connection configuration. Store connection change logs. Apply change approval process for critical connections
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Don'ts">
    <CardGroup cols={2}>
      <Card title="Shared Root Account" icon="alert-triangle">
        **Why avoid:** Single error affects all servers, cannot be audited\
        **Alternative:** Define role-based service users
      </Card>

      <Card title="Ignoring Firewall Restrictions" icon="alert-triangle">
        **Why avoid:** Scripts fail if SSH port is closed\
        **Alternative:** Get opening approval from network team for host/port and set up monitoring
      </Card>

      <Card title="Not Validating Script Output" icon="alert-triangle">
        **Why avoid:** Incorrect success messages mislead processes\
        **Alternative:** Parse output and add conditional steps in Integration Flow
      </Card>

      <Card title="Using Production Connection in Test Environment" icon="alert-triangle">
        **Why avoid:** Test data may be written to production system, real users may be affected, security risk occurs\
        **Alternative:** Create separate connection for each environment, use environment parameter, separate connection names by adding prefix according to environment (Test\_, Prod\_)
      </Card>

      <Card title="Very Low Timeout Values" icon="alert-triangle">
        **Why avoid:** Connection constantly times out in network delays, Integration steps fail\
        **Alternative:** Adjust timeout values according to real usage scenarios, measure network latency and set timeouts accordingly
      </Card>

      <Card title="Not Using Connection Pool" icon="alert-triangle">
        **Why avoid:** New connection opens on every request, performance decreases, resource consumption increases, target system load increases\
        **Alternative:** Enable connection pool, adjust pool size according to traffic volume, set up pool monitoring
      </Card>
    </CardGroup>
  </Accordion>

  <Accordion title="Performance Tips">
    <CardGroup cols={2}>
      <Card title="Script Duration Monitoring" icon="clock">
        **Recommendation:** Add duration metric to Connector outputs, monitor 95th percentile value\
        **Impact:** Long scripts are detected early, scaling is performed
      </Card>

      <Card title="Output Size Control" icon="file">
        **Recommendation:** Compress large outputs and return as file, send only summary in Integration Flow\
        **Impact:** Payload decreases, Gateway memory is optimized
      </Card>

      <Card title="Parallel Request Planning" icon="layers">
        **Recommendation:** Distribute workloads targeting same host, run sequentially with Cron envelopes\
        **Impact:** Server resources are used balanced, SSH queues don't form
      </Card>

      <Card title="Connection Pool Optimization" icon="database">
        **Recommendation:** Set pool size according to peak traffic (recommended: concurrent request count × 1.5), set idle connection timeouts, perform pool health check\
        **Impact:** Connection opening cost decreases by 80%, response times decrease, resource usage is optimized
      </Card>

      <Card title="Timeout Values Optimization" icon="hourglass">
        **Recommendation:** Measure real network latency, adjust timeout values accordingly, avoid very low or very high timeouts\
        **Impact:** Unnecessary waits are prevented, fast fail-over is provided, user experience improves
      </Card>

      <Card title="Connection Monitoring" icon="activity">
        **Recommendation:** Monitor connection pool usage, track timeout rates, perform connection health check, set up alerting\
        **Impact:** Problems are proactively detected, performance bottlenecks are identified early, downtime decreases
      </Card>
    </CardGroup>
  </Accordion>
</AccordionGroup>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Script Runs But Output is Empty">
    <Warning>
      Script may be writing to file instead of stdout, JSON format may be invalid, or output key validation may have failed.
    </Warning>

    <Steps>
      <Step title="Script Update">
        Update script to write to stdout.
      </Step>

      <Step title="JSON Validation">
        Validate JSON output with jq.
      </Step>

      <Step title="Output Key Check">
        Check Connector output key setting.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="SSH Permission Error">
    <Warning>
      User may not have access to target directory, sudo requirement may not be met, or host fingerprint may not be verified.
    </Warning>

    <Steps>
      <Step title="User Permissions">
        Check user permissions.
      </Step>

      <Step title="Sudoers Settings">
        Add command-based permission to sudoers file.
      </Step>

      <Step title="Host Fingerprint">
        Add host fingerprint to worker.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Timeout">
    <Warning>
      Network delay, target system responding slowly, or timeout value may be too low.
    </Warning>

    <Steps>
      <Step title="Network Check">
        Check network connectivity.
      </Step>

      <Step title="System Health">
        Check target system health.
      </Step>

      <Step title="Timeout Settings">
        Increase timeout values.
      </Step>

      <Step title="Log Review">
        Review connection logs.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Authentication Failed">
    <Warning>
      Wrong username/password, expired credentials, or permission problem may exist.
    </Warning>

    <Steps>
      <Step title="Credentials">
        Verify credentials.
      </Step>

      <Step title="User Status">
        Check that user is active on target system.
      </Step>

      <Step title="Permission Check">
        Check that necessary permissions are granted.
      </Step>

      <Step title="Certificate Check">
        Check SSL/TLS certificates.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Pool Exhausted">
    <Warning>
      Pool size may be too low, connection leak may exist, or traffic may be too high.
    </Warning>

    <Steps>
      <Step title="Pool Size">
        Increase pool size.
      </Step>

      <Step title="Connection Check">
        Check that connections are properly closed.
      </Step>

      <Step title="Idle Timeout">
        Set idle connection timeouts.
      </Step>

      <Step title="Metric Monitoring">
        Monitor connection usage metrics.
      </Step>
    </Steps>
  </Accordion>

  <Accordion title="Connection Test Successful But Integration Flow Errors">
    <Warning>
      Different connection may be selected in Integration/Connector step, step may be misconfigured, or Flow/Job may not be redeployed.
    </Warning>

    <Steps>
      <Step title="Enable Toggle">
        Check that connection's enable toggle is active.
      </Step>

      <Step title="Connection Selection">
        Verify that correct connection is selected in Integration Flow.
      </Step>

      <Step title="Connection Deploy">
        Redeploy connection.
      </Step>

      <Step title="Flow/Job Deploy">
        Redeploy Integration Flow or Job.
      </Step>

      <Step title="Log Check">
        Check Gateway logs.
      </Step>
    </Steps>
  </Accordion>
</AccordionGroup>

## Frequently Asked Questions (FAQ)

<AccordionGroup>
  <Accordion title="Can different projects share the same Linux Script connection?">
    <Info>
      No, each connection belongs to a specific project; if sharing is needed, export/import or move-to-global operation should be applied.
    </Info>
  </Accordion>

  <Accordion title="Is automatic retry performed when script fails?">
    <Info>
      No, connector performs single execution. If retry is needed, Retry step should be configured in Integration Flow.
    </Info>
  </Accordion>

  <Accordion title="How are passwords stored?">
    <Info>
      Passwords entered through UI are encrypted when saved, decrypted only at runtime on worker side with UtilCommon.decryptWithDefaultAlgorithm.
    </Info>
  </Accordion>

  <Accordion title="What command does Test Connection execute?">
    <Info>
      During save, ls command is triggered via UtilRemoteLinux.runLinuxCommand; thus SSH and permission validation is performed.
    </Info>
  </Accordion>

  <Accordion title="How do I use script output in other steps?">
    <Info>
      You can select output keys returned from Connector as variables in subsequent steps within Integration Flow; get only necessary fields with JSON path settings.
    </Info>
  </Accordion>

  <Accordion title="Can I use the same connection in multiple Integration Flows?">
    <Check>
      Yes, the same connection can be used in multiple Integration Flow or Connector steps. This provides centralized management and guarantees configuration consistency. However, changes made to the connection will affect all usage locations, so care should be taken.
    </Check>
  </Accordion>

  <Accordion title="Is using connection pool mandatory?">
    <Info>
      Connection pool usage is not mandatory but strongly recommended in high-traffic systems. Reusing existing connections instead of opening new connection on every request significantly increases performance.
    </Info>
  </Accordion>

  <Accordion title="Should I create different connections for Test and Production?">
    <Check>
      Yes, it is recommended to create separate connection for each environment. Alternatively, you can manage all environments in a single connection using environment parameter. This approach provides easier management and less error risk.
    </Check>
  </Accordion>

  <Accordion title="Test Connection is successful but not working in Integration Flow, why?">
    <Warning>
      Several reasons may exist:
    </Warning>

    1. Connection enable toggle may be passive
    2. Different connection may be selected in Integration step
    3. Connection may not be deployed
    4. Integration Flow may not be redeployed yet
  </Accordion>
</AccordionGroup>
